Compare commits

...

25 Commits

Author SHA1 Message Date
Julian Lam
b85261e2bf why did the shrinkwrap file get deleted? 2014-09-17 09:43:55 -04:00
Julian Lam
4c289a63b9 updating shrinkwrap file 2014-09-16 10:27:37 -04:00
Julian Lam
5b3a2b951b Merge branch 'master' into v0.5.x 2014-09-16 10:26:16 -04:00
Julian Lam
963428174b fixed #2091 2014-09-16 09:18:21 -04:00
Julian Lam
52bb7ebe52 0.5.0 2014-09-15 22:12:12 -04:00
Julian Lam
6ade1e858d updating default config so the site title is shown 2014-09-15 22:10:32 -04:00
Julian Lam
d80d4df80d 0.5.0 2014-09-15 22:10:09 -04:00
Julian Lam
d721e96226 updated shrinkwrap file 2014-09-15 22:10:00 -04:00
Julian Lam
af4881c695 updating default config so the site title is shown 2014-09-15 22:09:41 -04:00
Julian Lam
fb6b6243f2 Merge branch 'master' into v0.5.x 2014-09-15 21:39:17 -04:00
Julian Lam
6bb924f25a removed theme-rocket folder, closed #2076 2014-09-14 15:24:39 -04:00
barisusakli
6bde9a1656 prevent getTopicsByTids crash if a topic is null 2014-09-13 19:33:09 -04:00
barisusakli
ae02c1a06c closes #2068 2014-09-10 18:48:43 -04:00
barisusakli
25ed131b13 show stack trace of error 2014-09-10 13:04:57 -04:00
barisusakli
e9798028de show error 2014-09-09 22:10:17 -04:00
barisusakli
5696ea2396 check errors on decodeURIComponent 2014-09-09 22:09:27 -04:00
barisusakli
0b79a73732 crash fix
if composer is opened in a topic that was deleted/purged
2014-09-01 17:24:23 -04:00
Barış Soner Uşaklı
43ca61de8c Update README.md 2014-09-01 14:42:11 -04:00
barisusakli
6c2ae0302d closes #2030 2014-09-01 13:29:49 -04:00
barisusakli
537dea4e4b crash fix 2014-08-30 14:42:48 -04:00
barisusakli
87c8cd2fb0 another crash fix 2014-08-30 11:56:29 -04:00
barisusakli
73bef8168f another crash fix 2014-08-30 11:54:43 -04:00
barisusakli
0473e7f25b crash fix 2014-08-30 11:50:45 -04:00
barisusakli
5f2380fdcd dont display all categories 2014-08-29 14:08:13 -04:00
Julian Lam
fa545c5bfd 0.5.0-4
Conflicts:
	package.json
2014-08-28 21:14:37 -04:00
18 changed files with 1445 additions and 276 deletions

View File

@@ -1,7 +1,7 @@
# <img alt="NodeBB" src="http://i.imgur.com/mYxPPtB.png" />
[![Build Status](https://travis-ci.org/NodeBB/NodeBB.svg?branch=master)](https://travis-ci.org/NodeBB/NodeBB)
[![Dependency Status](https://david-dm.org/nodebb/nodebb.svg)](https://david-dm.org/nodebb/nodebb)
[![Code Climate](https://codeclimate.com/github/designcreateplay/NodeBB.png)](https://codeclimate.com/github/designcreateplay/NodeBB)
[![Code Climate](https://codeclimate.com/github/NodeBB/NodeBB/badges/gpa.svg)](https://codeclimate.com/github/NodeBB/NodeBB)
[![Documentation Status](https://readthedocs.org/projects/nodebb/badge/?version=latest)](https://readthedocs.org/projects/nodebb/?badge=latest)
**NodeBB Forum Software** is powered by Node.js and built on a Redis database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB is compatible down to IE8 and has many modern features out of the box such as social network integration and streaming discussions.

View File

@@ -3,6 +3,10 @@
"field": "title",
"value": "NodeBB"
},
{
"field": "showSiteTitle",
"value": "1"
},
{
"field": "postDelay",
"value": 10

545
npm-shrinkwrap.json generated
View File

@@ -1,6 +1,6 @@
{
"name": "nodebb",
"version": "0.5.0-3",
"version": "0.5.0",
"dependencies": {
"async": {
"version": "0.9.0",
@@ -13,9 +13,9 @@
"resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.0.2.tgz"
},
"body-parser": {
"version": "1.6.6",
"version": "1.8.2",
"from": "body-parser@^1.0.1",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.6.6.tgz",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.8.2.tgz",
"dependencies": {
"bytes": {
"version": "1.0.0",
@@ -23,9 +23,9 @@
"resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz"
},
"depd": {
"version": "0.4.4",
"from": "depd@0.4.4",
"resolved": "https://registry.npmjs.org/depd/-/depd-0.4.4.tgz"
"version": "0.4.5",
"from": "depd@0.4.5",
"resolved": "https://registry.npmjs.org/depd/-/depd-0.4.5.tgz"
},
"iconv-lite": {
"version": "0.4.4",
@@ -33,9 +33,9 @@
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.4.tgz"
},
"media-typer": {
"version": "0.2.0",
"from": "media-typer@0.2.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.2.0.tgz"
"version": "0.3.0",
"from": "media-typer@0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz"
},
"on-finished": {
"version": "2.1.0",
@@ -50,9 +50,9 @@
}
},
"qs": {
"version": "2.2.0",
"from": "qs@2.2.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-2.2.0.tgz"
"version": "2.2.3",
"from": "qs@~2.2.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-2.2.3.tgz"
},
"raw-body": {
"version": "1.3.0",
@@ -60,33 +60,47 @@
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.3.0.tgz"
},
"type-is": {
"version": "1.3.2",
"from": "type-is@~1.3.2",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.3.2.tgz",
"version": "1.5.1",
"from": "type-is@~1.5.1",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.5.1.tgz",
"dependencies": {
"mime-types": {
"version": "1.0.2",
"from": "mime-types@~1.0.1",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz"
"version": "2.0.1",
"from": "mime-types@~2.0.1",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.1.tgz",
"dependencies": {
"mime-db": {
"version": "1.0.1",
"from": "mime-db@~1.0.1",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.0.1.tgz"
}
}
}
}
}
}
},
"compression": {
"version": "1.0.11",
"version": "1.1.0",
"from": "compression@^1.0.1",
"resolved": "https://registry.npmjs.org/compression/-/compression-1.0.11.tgz",
"resolved": "https://registry.npmjs.org/compression/-/compression-1.1.0.tgz",
"dependencies": {
"accepts": {
"version": "1.0.7",
"from": "accepts@~1.0.7",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.0.7.tgz",
"version": "1.1.0",
"from": "accepts@~1.1.0",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.1.0.tgz",
"dependencies": {
"mime-types": {
"version": "1.0.2",
"from": "mime-types@~1.0.0",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz"
"version": "2.0.1",
"from": "mime-types@~2.0.1",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.1.tgz",
"dependencies": {
"mime-db": {
"version": "1.0.1",
"from": "mime-db@~1.0.1",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.0.1.tgz"
}
}
},
"negotiator": {
"version": "0.4.7",
@@ -101,14 +115,21 @@
"resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz"
},
"compressible": {
"version": "1.1.1",
"from": "compressible@~1.1.1",
"resolved": "https://registry.npmjs.org/compressible/-/compressible-1.1.1.tgz"
"version": "2.0.0",
"from": "compressible@~2.0.0",
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.0.tgz",
"dependencies": {
"mime-db": {
"version": "1.0.1",
"from": "mime-db@~1.0.1",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.0.1.tgz"
}
}
},
"debug": {
"version": "1.0.4",
"from": "debug@1.0.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz",
"version": "2.0.0",
"from": "debug@~2.0.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.0.0.tgz",
"dependencies": {
"ms": {
"version": "0.6.2",
@@ -135,9 +156,9 @@
"resolved": "https://registry.npmjs.org/connect-flash/-/connect-flash-0.1.1.tgz"
},
"connect-multiparty": {
"version": "1.2.3",
"version": "1.2.4",
"from": "connect-multiparty@^1.0.1",
"resolved": "https://registry.npmjs.org/connect-multiparty/-/connect-multiparty-1.2.3.tgz",
"resolved": "https://registry.npmjs.org/connect-multiparty/-/connect-multiparty-1.2.4.tgz",
"dependencies": {
"multiparty": {
"version": "3.3.2",
@@ -191,9 +212,9 @@
}
},
"qs": {
"version": "2.2.1",
"from": "qs@~2.2.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-2.2.1.tgz"
"version": "2.2.3",
"from": "qs@~2.2.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-2.2.3.tgz"
},
"type-is": {
"version": "1.3.2",
@@ -215,9 +236,9 @@
}
},
"cookie-parser": {
"version": "1.3.2",
"version": "1.3.3",
"from": "cookie-parser@^1.0.1",
"resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.2.tgz",
"resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.3.tgz",
"dependencies": {
"cookie": {
"version": "0.1.2",
@@ -225,9 +246,9 @@
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz"
},
"cookie-signature": {
"version": "1.0.4",
"from": "cookie-signature@1.0.4",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.4.tgz"
"version": "1.0.5",
"from": "cookie-signature@1.0.5",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.5.tgz"
}
}
},
@@ -237,9 +258,9 @@
"resolved": "https://registry.npmjs.org/cron/-/cron-1.0.4.tgz"
},
"csurf": {
"version": "1.5.0",
"version": "1.6.1",
"from": "csurf@^1.1.0",
"resolved": "https://registry.npmjs.org/csurf/-/csurf-1.5.0.tgz",
"resolved": "https://registry.npmjs.org/csurf/-/csurf-1.6.1.tgz",
"dependencies": {
"cookie": {
"version": "0.1.2",
@@ -247,9 +268,9 @@
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz"
},
"cookie-signature": {
"version": "1.0.4",
"from": "cookie-signature@1.0.4",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.4.tgz"
"version": "1.0.5",
"from": "cookie-signature@1.0.5",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.5.tgz"
},
"csrf": {
"version": "2.0.1",
@@ -277,9 +298,9 @@
"resolved": "https://registry.npmjs.org/mz/-/mz-1.0.1.tgz",
"dependencies": {
"native-or-bluebird": {
"version": "1.0.0",
"version": "1.1.1",
"from": "native-or-bluebird@1",
"resolved": "https://registry.npmjs.org/native-or-bluebird/-/native-or-bluebird-1.0.0.tgz"
"resolved": "https://registry.npmjs.org/native-or-bluebird/-/native-or-bluebird-1.1.1.tgz"
}
}
}
@@ -287,7 +308,7 @@
},
"base64-url": {
"version": "1.0.0",
"from": "base64-url@1",
"from": "base64-url@1.0.0",
"resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.0.0.tgz"
}
}
@@ -311,7 +332,7 @@
"dependencies": {
"mime-types": {
"version": "1.0.2",
"from": "mime-types@~1.0.0",
"from": "mime-types@~1.0.1",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz"
},
"negotiator": {
@@ -474,29 +495,29 @@
}
},
"express-session": {
"version": "1.7.6",
"version": "1.8.2",
"from": "express-session@^1.0.2",
"resolved": "https://registry.npmjs.org/express-session/-/express-session-1.7.6.tgz",
"resolved": "https://registry.npmjs.org/express-session/-/express-session-1.8.2.tgz",
"dependencies": {
"buffer-crc32": {
"version": "0.2.3",
"from": "buffer-crc32@0.2.3",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.3.tgz"
},
"cookie": {
"version": "0.1.2",
"from": "cookie@0.1.2",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz"
},
"cookie-signature": {
"version": "1.0.4",
"from": "cookie-signature@1.0.4",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.4.tgz"
"version": "1.0.5",
"from": "cookie-signature@1.0.5",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.5.tgz"
},
"crc": {
"version": "3.0.0",
"from": "crc@3.0.0",
"resolved": "https://registry.npmjs.org/crc/-/crc-3.0.0.tgz"
},
"debug": {
"version": "1.0.4",
"from": "debug@1.0.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz",
"version": "2.0.0",
"from": "debug@~2.0.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.0.0.tgz",
"dependencies": {
"ms": {
"version": "0.6.2",
@@ -506,9 +527,9 @@
}
},
"depd": {
"version": "0.4.4",
"from": "depd@0.4.4",
"resolved": "https://registry.npmjs.org/depd/-/depd-0.4.4.tgz"
"version": "0.4.5",
"from": "depd@0.4.5",
"resolved": "https://registry.npmjs.org/depd/-/depd-0.4.5.tgz"
},
"on-headers": {
"version": "1.0.0",
@@ -531,9 +552,9 @@
"resolved": "https://registry.npmjs.org/mz/-/mz-1.0.1.tgz",
"dependencies": {
"native-or-bluebird": {
"version": "1.0.0",
"version": "1.1.1",
"from": "native-or-bluebird@1",
"resolved": "https://registry.npmjs.org/native-or-bluebird/-/native-or-bluebird-1.0.0.tgz"
"resolved": "https://registry.npmjs.org/native-or-bluebird/-/native-or-bluebird-1.1.1.tgz"
}
}
},
@@ -577,9 +598,9 @@
"resolved": "https://registry.npmjs.org/stream-to-buffer/-/stream-to-buffer-0.0.1.tgz"
},
"through": {
"version": "2.3.4",
"version": "2.3.6",
"from": "through@~2.3.1",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.4.tgz"
"resolved": "https://registry.npmjs.org/through/-/through-2.3.6.tgz"
}
}
},
@@ -589,14 +610,14 @@
"resolved": "https://registry.npmjs.org/gravatar/-/gravatar-1.0.6.tgz"
},
"less": {
"version": "1.7.4",
"version": "1.7.5",
"from": "less@~1.7.3",
"resolved": "https://registry.npmjs.org/less/-/less-1.7.4.tgz",
"resolved": "https://registry.npmjs.org/less/-/less-1.7.5.tgz",
"dependencies": {
"graceful-fs": {
"version": "2.0.3",
"from": "graceful-fs@~2.0.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz"
"version": "3.0.2",
"from": "graceful-fs@~3.0.2",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.2.tgz"
},
"mime": {
"version": "1.2.11",
@@ -604,20 +625,25 @@
"resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz"
},
"request": {
"version": "2.34.0",
"from": "request@~2.34.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.34.0.tgz",
"version": "2.40.0",
"from": "request@~2.40.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.40.0.tgz",
"dependencies": {
"qs": {
"version": "0.6.6",
"from": "qs@~0.6.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-0.6.6.tgz"
"version": "1.0.2",
"from": "qs@~1.0.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-1.0.2.tgz"
},
"json-stringify-safe": {
"version": "5.0.0",
"from": "json-stringify-safe@~5.0.0",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.0.tgz"
},
"mime-types": {
"version": "1.0.2",
"from": "mime-types@~1.0.1",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz"
},
"forever-agent": {
"version": "0.5.2",
"from": "forever-agent@~0.5.0",
@@ -660,9 +686,9 @@
}
},
"tunnel-agent": {
"version": "0.3.0",
"from": "tunnel-agent@~0.3.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.3.0.tgz"
"version": "0.4.0",
"from": "tunnel-agent@~0.4.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.0.tgz"
},
"http-signature": {
"version": "0.10.0",
@@ -692,9 +718,9 @@
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.3.0.tgz"
},
"hawk": {
"version": "1.0.0",
"from": "hawk@~1.0.0",
"resolved": "https://registry.npmjs.org/hawk/-/hawk-1.0.0.tgz",
"version": "1.1.1",
"from": "hawk@1.1.1",
"resolved": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz",
"dependencies": {
"hoek": {
"version": "0.9.1",
@@ -722,30 +748,30 @@
"version": "0.5.0",
"from": "aws-sign2@~0.5.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz"
},
"stringstream": {
"version": "0.0.4",
"from": "stringstream@~0.0.4",
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz"
}
}
},
"mkdirp": {
"version": "0.3.5",
"from": "mkdirp@~0.3.5",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz"
},
"clean-css": {
"version": "2.1.8",
"from": "clean-css@2.1.x",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-2.1.8.tgz",
"version": "2.2.16",
"from": "clean-css@2.2.x",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-2.2.16.tgz",
"dependencies": {
"commander": {
"version": "2.1.0",
"from": "commander@2.1.x",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz"
"version": "2.2.0",
"from": "commander@2.2.x",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.2.0.tgz"
}
}
},
"source-map": {
"version": "0.1.38",
"version": "0.1.39",
"from": "source-map@0.1.x",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.38.tgz",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.39.tgz",
"dependencies": {
"amdefine": {
"version": "0.1.0",
@@ -769,24 +795,19 @@
}
},
"morgan": {
"version": "1.2.3",
"version": "1.3.1",
"from": "morgan@^1.0.0",
"resolved": "https://registry.npmjs.org/morgan/-/morgan-1.2.3.tgz",
"resolved": "https://registry.npmjs.org/morgan/-/morgan-1.3.1.tgz",
"dependencies": {
"basic-auth": {
"version": "1.0.0",
"from": "basic-auth@1.0.0",
"resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.0.tgz"
},
"bytes": {
"version": "1.0.0",
"from": "bytes@1.0.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz"
},
"depd": {
"version": "0.4.4",
"from": "depd@0.4.4",
"resolved": "https://registry.npmjs.org/depd/-/depd-0.4.4.tgz"
"version": "0.4.5",
"from": "depd@0.4.5",
"resolved": "https://registry.npmjs.org/depd/-/depd-0.4.5.tgz"
},
"on-finished": {
"version": "2.1.0",
@@ -813,9 +834,9 @@
"resolved": "https://registry.npmjs.org/async/-/async-0.2.9.tgz"
},
"ini": {
"version": "1.2.1",
"version": "1.3.0",
"from": "ini@1.x.x",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.2.1.tgz"
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.0.tgz"
},
"optimist": {
"version": "0.6.0",
@@ -855,7 +876,7 @@
"dependencies": {
"marked": {
"version": "0.3.2",
"from": "marked@^0.3.2",
"from": "marked@~0.3.2",
"resolved": "https://registry.npmjs.org/marked/-/marked-0.3.2.tgz"
},
"pygmentize-bundled": {
@@ -972,13 +993,13 @@
"from": "nodebb-theme-lavender@~0.0.74"
},
"nodebb-theme-vanilla": {
"version": "0.0.135",
"version": "0.0.137",
"from": "nodebb-theme-vanilla@~0.0.111"
},
"nodebb-widget-essentials": {
"version": "0.1.0-5",
"version": "0.1.0-6",
"from": "nodebb-widget-essentials@~0.1.0",
"resolved": "https://registry.npmjs.org/nodebb-widget-essentials/-/nodebb-widget-essentials-0.1.0-5.tgz",
"resolved": "https://registry.npmjs.org/nodebb-widget-essentials/-/nodebb-widget-essentials-0.1.0-6.tgz",
"dependencies": {
"async": {
"version": "0.2.10",
@@ -993,9 +1014,9 @@
}
},
"npm": {
"version": "1.4.24",
"version": "1.4.27",
"from": "npm@^1.4.6",
"resolved": "https://registry.npmjs.org/npm/-/npm-1.4.24.tgz",
"resolved": "https://registry.npmjs.org/npm/-/npm-1.4.27.tgz",
"dependencies": {
"abbrev": {
"version": "1.0.5",
@@ -1043,36 +1064,43 @@
"from": "../chownr"
},
"cmd-shim": {
"version": "1.1.2",
"from": "cmd-shim@~1.1.1",
"resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-1.1.2.tgz"
"version": "2.0.0",
"from": "git://github.com/othiym23/cmd-shim",
"resolved": "git://github.com/othiym23/cmd-shim#12de64ca97f45ac600910092f19afacc3d5376dd"
},
"columnify": {
"version": "1.1.0",
"from": "columnify@latest",
"resolved": "https://registry.npmjs.org/columnify/-/columnify-1.1.0.tgz",
"version": "1.2.1",
"from": "columnify@^1.2.1",
"resolved": "https://registry.npmjs.org/columnify/-/columnify-1.2.1.tgz",
"dependencies": {
"strip-ansi": {
"version": "0.2.2",
"from": "strip-ansi@^0.2.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.2.2.tgz",
"version": "1.0.0",
"from": "strip-ansi@^1.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-1.0.0.tgz",
"dependencies": {
"ansi-regex": {
"version": "0.1.0",
"from": "ansi-regex@^0.1.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.1.0.tgz"
"version": "0.2.1",
"from": "ansi-regex@^0.2.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
}
}
},
"wcwidth.js": {
"version": "0.0.4",
"from": "wcwidth.js@~0.0.4",
"resolved": "https://registry.npmjs.org/wcwidth.js/-/wcwidth.js-0.0.4.tgz",
"wcwidth": {
"version": "1.0.0",
"from": "wcwidth@^1.0.0",
"resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.0.tgz",
"dependencies": {
"underscore": {
"version": "1.6.0",
"from": "underscore@>= 1.3.0",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz"
"defaults": {
"version": "1.0.0",
"from": "defaults@^1.0.0",
"resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.0.tgz",
"dependencies": {
"clone": {
"version": "0.1.18",
"from": "clone@~0.1.5",
"resolved": "https://registry.npmjs.org/clone/-/clone-0.1.18.tgz"
}
}
}
}
}
@@ -1084,7 +1112,7 @@
"resolved": "https://registry.npmjs.org/editor/-/editor-0.1.0.tgz"
},
"fstream": {
"version": "1.0.0",
"version": "1.0.2",
"from": "fstream@latest"
},
"fstream-npm": {
@@ -1098,14 +1126,14 @@
}
},
"github-url-from-git": {
"version": "1.3.0",
"from": "github-url-from-git@latest",
"resolved": "https://registry.npmjs.org/github-url-from-git/-/github-url-from-git-1.3.0.tgz"
"version": "1.4.0",
"from": "github-url-from-git@^1.4.0",
"resolved": "https://registry.npmjs.org/github-url-from-git/-/github-url-from-git-1.4.0.tgz"
},
"github-url-from-username-repo": {
"version": "0.2.0",
"from": "github-url-from-username-repo@latest",
"resolved": "https://registry.npmjs.org/github-url-from-username-repo/-/github-url-from-username-repo-0.2.0.tgz"
"version": "1.0.0",
"from": "github-url-from-username-repo@^1.0.0",
"resolved": "https://registry.npmjs.org/github-url-from-username-repo/-/github-url-from-username-repo-1.0.0.tgz"
},
"glob": {
"version": "4.0.5",
@@ -1140,9 +1168,8 @@
}
},
"lockfile": {
"version": "0.4.2",
"from": "lockfile@0.4.2",
"resolved": "https://registry.npmjs.org/lockfile/-/lockfile-0.4.2.tgz"
"version": "1.0.0",
"from": "lockfile@latest"
},
"lru-cache": {
"version": "2.5.0",
@@ -1190,18 +1217,16 @@
"from": "npm-install-checks@latest"
},
"npm-registry-client": {
"version": "2.0.4",
"from": "npm-registry-client@2.0.4",
"resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-2.0.4.tgz"
"version": "2.0.7",
"from": "npm-registry-client@^2.0.7"
},
"npm-user-validate": {
"version": "0.1.0",
"from": "npm-user-validate@latest"
},
"npmconf": {
"version": "1.1.5",
"from": "npmconf@1.1.5",
"resolved": "https://registry.npmjs.org/npmconf/-/npmconf-1.1.5.tgz",
"version": "1.1.8",
"from": "npmconf@^1.1.8",
"dependencies": {
"config-chain": {
"version": "1.1.8",
@@ -1260,120 +1285,190 @@
}
},
"read-package-json": {
"version": "1.2.6",
"from": "read-package-json@latest",
"version": "1.2.7",
"from": "read-package-json@^1.2.7",
"resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-1.2.7.tgz",
"dependencies": {
"normalize-package-data": {
"version": "1.0.0",
"from": "normalize-package-data@^1.0.0"
"version": "1.0.1",
"from": "normalize-package-data@^1.0.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-1.0.1.tgz"
}
}
},
"request": {
"version": "2.30.0",
"from": "request@latest",
"version": "2.42.0",
"from": "request@^2.42.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.42.0.tgz",
"dependencies": {
"bl": {
"version": "0.9.1",
"from": "bl@~0.9.0",
"resolved": "https://registry.npmjs.org/bl/-/bl-0.9.1.tgz",
"dependencies": {
"readable-stream": {
"version": "1.0.31",
"from": "readable-stream@~1.0.26",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.31.tgz",
"dependencies": {
"core-util-is": {
"version": "1.0.1",
"from": "core-util-is@~1.0.0",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"
},
"isarray": {
"version": "0.0.1",
"from": "isarray@0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
},
"string_decoder": {
"version": "0.10.31",
"from": "string_decoder@~0.10.x",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
}
}
}
}
},
"caseless": {
"version": "0.6.0",
"from": "caseless@~0.6.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.6.0.tgz"
},
"forever-agent": {
"version": "0.5.2",
"from": "forever-agent@~0.5.0",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz"
},
"qs": {
"version": "0.6.6",
"from": "qs@~0.6.0"
"version": "1.2.2",
"from": "qs@~1.2.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz"
},
"json-stringify-safe": {
"version": "5.0.0",
"from": "json-stringify-safe@~5.0.0"
"from": "json-stringify-safe@~5.0.0",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.0.tgz"
},
"forever-agent": {
"version": "0.5.0",
"from": "forever-agent@~0.5.0"
"mime-types": {
"version": "1.0.2",
"from": "mime-types@~1.0.1",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz"
},
"node-uuid": {
"version": "1.4.1",
"from": "node-uuid@~1.4.0"
"from": "node-uuid@~1.4.0",
"resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.1.tgz"
},
"mime": {
"version": "1.2.11",
"from": "mime@~1.2.9"
"tunnel-agent": {
"version": "0.4.0",
"from": "tunnel-agent@~0.4.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.0.tgz"
},
"tough-cookie": {
"version": "0.9.15",
"from": "tough-cookie@~0.9.15",
"version": "0.12.1",
"from": "tough-cookie@>=0.12.0",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-0.12.1.tgz",
"dependencies": {
"punycode": {
"version": "1.2.3",
"from": "punycode@>=0.2.0"
"version": "1.3.1",
"from": "punycode@>=0.2.0",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.1.tgz"
}
}
},
"form-data": {
"version": "0.1.2",
"version": "0.1.4",
"from": "form-data@~0.1.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-0.1.4.tgz",
"dependencies": {
"combined-stream": {
"version": "0.0.4",
"version": "0.0.5",
"from": "combined-stream@~0.0.4",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.5.tgz",
"dependencies": {
"delayed-stream": {
"version": "0.0.5",
"from": "delayed-stream@0.0.5"
"from": "delayed-stream@0.0.5",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz"
}
}
},
"mime": {
"version": "1.2.11",
"from": "mime@~1.2.11",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz"
},
"async": {
"version": "0.2.9",
"from": "async@~0.2.9"
"version": "0.9.0",
"from": "async@~0.9.0",
"resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz"
}
}
},
"tunnel-agent": {
"version": "0.3.0",
"from": "tunnel-agent@~0.3.0"
},
"http-signature": {
"version": "0.10.0",
"from": "http-signature@~0.10.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.0.tgz",
"dependencies": {
"assert-plus": {
"version": "0.1.2",
"from": "assert-plus@0.1.2"
"from": "assert-plus@0.1.2",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.2.tgz"
},
"asn1": {
"version": "0.1.11",
"from": "asn1@0.1.11"
"from": "asn1@0.1.11",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz"
},
"ctype": {
"version": "0.5.2",
"from": "ctype@0.5.2"
"from": "ctype@0.5.2",
"resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.2.tgz"
}
}
},
"oauth-sign": {
"version": "0.3.0",
"from": "oauth-sign@~0.3.0"
"version": "0.4.0",
"from": "oauth-sign@~0.4.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.4.0.tgz"
},
"hawk": {
"version": "1.0.0",
"from": "hawk@~1.0.0",
"version": "1.1.1",
"from": "hawk@1.1.1",
"resolved": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz",
"dependencies": {
"hoek": {
"version": "0.9.1",
"from": "hoek@0.9.x"
"from": "hoek@0.9.x",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz"
},
"boom": {
"version": "0.4.2",
"from": "boom@0.4.x"
"from": "boom@0.4.x",
"resolved": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz"
},
"cryptiles": {
"version": "0.2.2",
"from": "cryptiles@0.2.x"
"from": "cryptiles@0.2.x",
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz"
},
"sntp": {
"version": "0.2.4",
"from": "sntp@0.2.x"
"from": "sntp@0.2.x",
"resolved": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz"
}
}
},
"aws-sign2": {
"version": "0.5.0",
"from": "aws-sign2@~0.5.0"
"from": "aws-sign2@~0.5.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz"
},
"stringstream": {
"version": "0.0.4",
"from": "stringstream@~0.0.4",
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz"
}
}
},
@@ -1428,7 +1523,7 @@
"from": "sorted-object@"
},
"tar": {
"version": "1.0.0",
"version": "1.0.1",
"from": "tar@latest"
},
"text-table": {
@@ -1451,9 +1546,9 @@
}
},
"passport": {
"version": "0.2.0",
"version": "0.2.1",
"from": "passport@~0.2.0",
"resolved": "https://registry.npmjs.org/passport/-/passport-0.2.0.tgz",
"resolved": "https://registry.npmjs.org/passport/-/passport-0.2.1.tgz",
"dependencies": {
"passport-strategy": {
"version": "1.0.0",
@@ -1480,9 +1575,9 @@
}
},
"prompt": {
"version": "0.2.13",
"version": "0.2.14",
"from": "prompt@~0.2.11",
"resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.13.tgz",
"resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz",
"dependencies": {
"pkginfo": {
"version": "0.3.0",
@@ -1513,7 +1608,7 @@
"dependencies": {
"async": {
"version": "0.2.10",
"from": "async@~0.2.9",
"from": "async@0.2.x",
"resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz"
},
"deep-equal": {
@@ -1534,18 +1629,18 @@
}
},
"winston": {
"version": "0.6.2",
"from": "winston@0.6.x",
"resolved": "https://registry.npmjs.org/winston/-/winston-0.6.2.tgz",
"version": "0.8.0",
"from": "winston@0.8.x",
"resolved": "https://registry.npmjs.org/winston/-/winston-0.8.0.tgz",
"dependencies": {
"async": {
"version": "0.1.22",
"from": "async@0.1.x",
"resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz"
"version": "0.2.10",
"from": "async@0.2.x",
"resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz"
},
"colors": {
"version": "0.6.2",
"from": "colors@0.x.x",
"from": "colors@0.6.x",
"resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz"
},
"cycle": {
@@ -1558,16 +1653,6 @@
"from": "eyes@0.1.x",
"resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz"
},
"pkginfo": {
"version": "0.2.3",
"from": "pkginfo@0.2.x",
"resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.2.3.tgz"
},
"request": {
"version": "2.9.203",
"from": "request@2.9.x",
"resolved": "https://registry.npmjs.org/request/-/request-2.9.203.tgz"
},
"stack-trace": {
"version": "0.0.9",
"from": "stack-trace@0.0.x",
@@ -1790,26 +1875,26 @@
"resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz"
},
"serve-favicon": {
"version": "2.1.1",
"version": "2.1.4",
"from": "serve-favicon@^2.0.1",
"resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.1.1.tgz",
"resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.1.4.tgz",
"dependencies": {
"etag": {
"version": "1.2.0",
"from": "etag@~1.2.0",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.2.0.tgz",
"version": "1.3.1",
"from": "etag@~1.3.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.3.1.tgz",
"dependencies": {
"crc": {
"version": "2.1.1",
"from": "crc@2.1.1",
"resolved": "https://registry.npmjs.org/crc/-/crc-2.1.1.tgz"
"version": "3.0.0",
"from": "crc@3.0.0",
"resolved": "https://registry.npmjs.org/crc/-/crc-3.0.0.tgz"
}
}
},
"fresh": {
"version": "0.2.2",
"from": "fresh@0.2.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.2.tgz"
"version": "0.2.4",
"from": "fresh@0.2.4",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.4.tgz"
},
"ms": {
"version": "0.6.2",

View File

@@ -2,7 +2,7 @@
"name": "nodebb",
"license": "GPLv3 or later",
"description": "NodeBB Forum",
"version": "0.5.0-4",
"version": "0.5.0",
"homepage": "http://www.nodebb.org",
"repository": {
"type": "git",

View File

@@ -43,7 +43,7 @@ define('forum/account/profile', ['forum/account/header'], function(header) {
};
function processPage() {
$('.user-recent-posts img').addClass('img-responsive');
$('.user-recent-posts img, .post-signature img').addClass('img-responsive');
}
function updateButtons() {

View File

@@ -1,7 +1,7 @@
"use strict";
/*global define, ajaxify, app, socket, RELATIVE_PATH*/
define('forum/admin/index', function() {
define('forum/admin/index', ['semver'], function(semver) {
var Admin = {};
Admin.init = function() {
@@ -21,6 +21,13 @@ define('forum/admin/index', function() {
});
$.get('https://api.github.com/repos/NodeBB/NodeBB/tags', function(releases) {
// Re-sort the releases, as they do not follow Semver (wrt pre-releases)
releases = releases.sort(function(a, b) {
a = a.name.replace(/^v/, '');
b = b.name.replace(/^v/, '');
return semver.lt(a, b) ? 1 : -1;
});
var version = $('#version').html(),
latestVersion = releases[0].name.slice(1),
checkEl = $('.version-check');

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

1046
public/vendor/semver/semver.browser.js vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -188,7 +188,7 @@ var db = require('./database'),
});
};
Categories.getVisibleCategories = function(uid, callback) {
Categories.getCategoriesByPrivilege = function(uid, privilege, callback) {
db.getSortedSetRange('categories:cid', 0, -1, function(err, cids) {
if (err) {
return callback(err);
@@ -198,7 +198,7 @@ var db = require('./database'),
return callback(null, []);
}
privileges.categories.filter('find', cids, uid, function(err, cids) {
privileges.categories.filter(privilege, cids, uid, function(err, cids) {
if (err) {
return callback(err);
}

View File

@@ -64,7 +64,7 @@ Controllers.home = function(req, res, next) {
},
categories: function (next) {
var uid = req.user ? req.user.uid : 0;
categories.getVisibleCategories(uid, function (err, categoryData) {
categories.getCategoriesByPrivilege(uid, 'find', function (err, categoryData) {
if (err) {
return next(err);
}

View File

@@ -70,7 +70,7 @@ topicsController.get = function(req, res, next) {
function (topicData, next) {
var description = '';
if(topicData.posts.length) {
if (topicData.posts[0] && topicData.posts[0].content) {
description = S(topicData.posts[0].content).stripTags().decodeHTMLEntities().s;
}
@@ -83,7 +83,7 @@ topicsController.get = function(req, res, next) {
var ogImageUrl = '';
if (topicData.thumb) {
ogImageUrl = topicData.thumb;
} else if(topicData.posts.length && topicData.posts[0].user && topicData.posts[0].user.picture){
} else if(topicData.posts.length && topicData.posts[0] && topicData.posts[0].user && topicData.posts[0].user.picture){
ogImageUrl = topicData.posts[0].user.picture;
} else if(meta.config['brand:logo']) {
ogImageUrl = meta.config['brand:logo'];

View File

@@ -1,6 +1,7 @@
'use strict';
var user = require('../user'),
var winston = require('winston'),
user = require('../user'),
translator = require('../../public/src/translator');
module.exports = function(Meta) {
@@ -14,7 +15,14 @@ module.exports = function(Meta) {
};
Meta.title.build = function (urlFragment, language, callback) {
Meta.title.parseFragment(decodeURIComponent(urlFragment), language, function(err, title) {
var uri = '';
try {
uri = decodeURIComponent(urlFragment);
} catch(e) {
winston.error('Invalid url fragment : ' + urlFragment, e.stack);
return callback(null, Meta.config.browserTitle || 'NodeBB');
}
Meta.title.parseFragment(uri, language, function(err, title) {
if (err) {
title = Meta.config.browserTitle || 'NodeBB';
} else {

View File

@@ -152,7 +152,7 @@ var async = require('async'),
if (!data || !Array.isArray(data.posts)) {
return callback(null, []);
}
data.posts = data.posts.filter(Boolean);
callback(null, data.posts);
});
});
@@ -357,7 +357,7 @@ var async = require('async'),
}
posts = posts.filter(function(post) {
return parseInt(results.topics[post.tid].deleted, 10) !== 1;
return results.topics[post.tid] && parseInt(results.topics[post.tid].deleted, 10) !== 1;
});
async.map(posts, function(post, next) {

View File

@@ -31,7 +31,7 @@ var path = require('path'),
async.parallel([
function(next) {
var categoryUrls = [];
categories.getVisibleCategories(0, function(err, categoriesData) {
categories.getCategoriesByPrivilege(0, 'find', function(err, categoriesData) {
if (err) {
return next(err);
}

View File

@@ -24,7 +24,7 @@ SocketCategories.getRecentReplies = function(socket, cid, callback) {
};
SocketCategories.get = function(socket, data, callback) {
categories.getAllCategories(callback);
categories.getCategoriesByPrivilege(socket.uid, 'find', callback);
};
SocketCategories.loadMore = function(socket, data, callback) {

View File

@@ -71,6 +71,10 @@ SocketModules.composer.push = function(socket, pid, callback) {
return callback(err);
}
if (!results.topic) {
return callback(new Error('[[error:no-topic]]'));
}
callback(null, {
pid: pid,
body: postData.content,

View File

@@ -172,9 +172,9 @@ var async = require('async'),
Topics.getTopicsData(tids, function(err, topics) {
function mapFilter(array, field) {
return array.map(function(topic) {
return topic[field];
return topic && topic[field];
}).filter(function(value, index, array) {
return array.indexOf(value) === index;
return value && array.indexOf(value) === index;
});
}
@@ -225,21 +225,23 @@ var async = require('async'),
});
for (var i=0; i<topics.length; ++i) {
topics[i].category = categories[topics[i].cid];
topics[i].category.disabled = parseInt(topics[i].category.disabled, 10) === 1;
topics[i].user = users[topics[i].uid];
topics[i].teaser = results.teasers[i];
topics[i].tags = results.tags[i];
if (topics[i]) {
topics[i].category = categories[topics[i].cid];
topics[i].category.disabled = parseInt(topics[i].category.disabled, 10) === 1;
topics[i].user = users[topics[i].uid];
topics[i].teaser = results.teasers[i];
topics[i].tags = results.tags[i];
topics[i].pinned = parseInt(topics[i].pinned, 10) === 1;
topics[i].locked = parseInt(topics[i].locked, 10) === 1;
topics[i].deleted = parseInt(topics[i].deleted, 10) === 1;
topics[i].unread = !(results.hasRead[i] && parseInt(uid, 10) !== 0);
topics[i].unreplied = parseInt(topics[i].postcount, 10) <= 1;
topics[i].pinned = parseInt(topics[i].pinned, 10) === 1;
topics[i].locked = parseInt(topics[i].locked, 10) === 1;
topics[i].deleted = parseInt(topics[i].deleted, 10) === 1;
topics[i].unread = !(results.hasRead[i] && parseInt(uid, 10) !== 0);
topics[i].unreplied = parseInt(topics[i].postcount, 10) <= 1;
}
}
topics = topics.filter(function(topic) {
return !topic.category.disabled &&
return topic && !topic.category.disabled &&
(!topic.deleted || (topic.deleted && isAdminOrMod[topic.cid]) ||
parseInt(topic.uid, 10) === parseInt(uid, 10));
});
@@ -272,9 +274,13 @@ var async = require('async'),
}
start = parseInt(start, 10);
for(var i=0; i<posts.length; ++i) {
posts[i].index = start + i;
if (posts[i]) {
posts[i].index = start + i;
}
}
if (posts[0]) {
posts[0].index = 0;
}
posts[0].index = 0;
Topics.addPostData(posts, uid, next);
});
});

View File

@@ -43,9 +43,13 @@ module.exports = function(Topics) {
Topics.addPostData = function(postData, uid, callback) {
var pids = postData.map(function(post) {
return post.pid;
return post && post.pid;
});
if (!Array.isArray(pids) || !pids.length) {
return callback(null, []);
}
async.parallel({
favourites: function(next) {
favourites.getFavouritesByPostIDs(pids, uid, next);
@@ -57,7 +61,7 @@ module.exports = function(Topics) {
var uids = [];
for(var i=0; i<postData.length; ++i) {
if (uids.indexOf(postData[i].uid) === -1) {
if (postData[i] && uids.indexOf(postData[i].uid) === -1) {
uids.push(postData[i].uid);
}
}
@@ -78,7 +82,7 @@ module.exports = function(Topics) {
editors: function(next) {
var editors = [];
for(var i=0; i<postData.length; ++i) {
if (postData[i].editor && editors.indexOf(postData[i].editor) === -1) {
if (postData[i] && postData[i].editor && editors.indexOf(postData[i].editor) === -1) {
editors.push(postData[i].editor);
}
}
@@ -90,7 +94,7 @@ module.exports = function(Topics) {
var editorData = {};
editors.forEach(function(editor) {
editorData[editor.uid] = editor;
})
});
next(null, editorData);
});
},
@@ -103,19 +107,21 @@ module.exports = function(Topics) {
}
for (var i = 0; i < postData.length; ++i) {
postData[i].deleted = parseInt(postData[i].deleted, 10) === 1;
postData[i].user = results.userData[postData[i].uid];
postData[i].editor = postData[i].editor ? results.editors[postData[i].editor] : null;
postData[i].favourited = results.favourites[i];
postData[i].upvoted = results.voteData.upvotes[i];
postData[i].downvoted = results.voteData.downvotes[i];
postData[i].votes = postData[i].votes || 0;
postData[i].display_moderator_tools = results.privileges[i].editable;
postData[i].display_move_tools = results.privileges[i].move && postData[i].index !== 0;
postData[i].selfPost = parseInt(uid, 10) === parseInt(postData[i].uid, 10);
if (postData[i]) {
postData[i].deleted = parseInt(postData[i].deleted, 10) === 1;
postData[i].user = results.userData[postData[i].uid];
postData[i].editor = postData[i].editor ? results.editors[postData[i].editor] : null;
postData[i].favourited = results.favourites[i];
postData[i].upvoted = results.voteData.upvotes[i];
postData[i].downvoted = results.voteData.downvotes[i];
postData[i].votes = postData[i].votes || 0;
postData[i].display_moderator_tools = results.privileges[i].editable;
postData[i].display_move_tools = results.privileges[i].move && postData[i].index !== 0;
postData[i].selfPost = parseInt(uid, 10) === parseInt(postData[i].uid, 10);
if(postData[i].deleted && !results.privileges[i].view_deleted) {
postData[i].content = '[[topic:post_is_deleted]]';
if(postData[i].deleted && !results.privileges[i].view_deleted) {
postData[i].content = '[[topic:post_is_deleted]]';
}
}
}
@@ -242,6 +248,9 @@ module.exports = function(Topics) {
Topics.getTopicDataByPid = function(pid, callback) {
posts.getPostField(pid, 'tid', function(err, tid) {
if (err) {
return callback(err);
}
Topics.getTopicData(tid, callback);
});
};