1878 Commits (51eccef58b7e0242dc7d0ec4ed28df3c4546dc6d)

Author SHA1 Message Date
Barış Soner Uşaklı 2996a5dc25 fix: #7359 6 years ago
Barış Soner Uşaklı c6ad8fae2a fix: #7354 6 years ago
Barış Soner Uşaklı 70d9c6c4ce fix: #7232 6 years ago
Barış Soner Uşaklı c72da5595a fix: #6806
3 new global privileges
view:users
view:tags
view:groups
6 years ago
Barış Soner Uşaklı 9d1fcf4e36 fix: closes #7217 6 years ago
Andrew Rodrigues 5031bfe8c0 feat: allow themes to define custom classes for categories via filter:admin.category.get
`datalist` isn't supported in all browsers but this will fallback to the original behavior. The first item in the list is the placeholder.
6 years ago
Barış Soner Uşaklı 5353960ae7 fix: #7316 6 years ago
Barış Soner Uşaklı 920efad04d fix: #7300 6 years ago
Barış Soner Uşaklı 7064fd0678 fix: #7235 6 years ago
Barış Soner Uşaklı a083d5f429 Merge branch 'master' of https://github.com/NodeBB/NodeBB 6 years ago
Barış Soner Uşaklı a22a3a9861 fix: log error to prevent headers already sent
retry on uniq index fail
6 years ago
Julian Lam 63061ffd37 feat: new hook filter:user.logout
- used for setting "next" for post logout redirection
6 years ago
Ricki Hirner 0a662e4882 Add Disallow: /compose to robots.txt 6 years ago
Julian Lam cee47f78b2 fix: #7289 timeago shorthand toggle fails on non-existant language
- Exposing timeagoCodes to frontend
- Timeago language and shorthand toggling will fall back to 'en'
  if the requested language does not exist
6 years ago
Julian Lam 059a4be204 feat: explicit handling of SSO success and failure 6 years ago
Julian Lam 831d079512 fix: #7274 incorrect handling of client script 404s 6 years ago
Barış Soner Uşaklı 9328eeca95 fix: escape hook method 6 years ago
Julian Lam 70a87d4399
feat: support for one-click unsubscribe from email clients (#7203)
* feat: sending notifs via ACP creates real notification

re: #7202

* feat: basic integration for one-click unsubscription #7202

* feat: tests for #7202 + bugfix

* feat: added and organized digest unsub tests

closes #7202
6 years ago
Baris Usakli 0d409610c4 fix: #7181 6 years ago
Julian Lam b0eaa858b5 fix: #7169 Fixed logout being broken 6 years ago
Julian Lam d81e0a5f5b fix: #7146 Better RTL handling on (de-)authentication
- RTL is applied (or unapplied) on login and logout depending on
  user language/guest-detected language.
- config is automatically saved into res.locals.config whenever
  loadConfig is called
- On login/logout, buildHeader is called instead of getting config
- On logout, req.uid is deleted instead of set to 0
6 years ago
Julian Lam 900f0a0b78 fix: #7118, invoking autoLocale middleware on logout
Also:
- firing client-side hook on header update
- updating bootbox locale on header update
6 years ago
Barış Soner Uşaklı 7e828404f6 fix: #7116
dont save relative_path in db for group covers
6 years ago
Barış Soner Uşaklı b9b9d8b2e9 feat: name topic controller 6 years ago
Barış Soner Uşaklı ae0fe5e880 feat: more naming 6 years ago
Barış Soner Uşaklı 9f5062682d fix: unread badge
- only increase unread badge if topic or category is watched
- fix logic for "there are new posts/topics" on /unread and /recent
6 years ago
Barış Soner Uşaklı 989879a6b5 fix: #7115 6 years ago
Barış Soner Uşaklı 14c4552304 dont modify session for spiders 6 years ago
Barış Soner Uşaklı eb7ae54f81
Category watch state (#7109)
* feat: wip, category watch change

* feat: pass data to client

* feat: allow changing state

* fix: account page categories

* fix: show in unread if topic is followed or category is watched

* feat: add default watch state to acp

* feat: save user category watch state

* feat: update unread recent pages

* fix: remove dupe code

* fix: flip conditions

* fix: handle empty arrays

* fix: ignore/watch on others profile

* feat: upgrade script for category states

if there are any users ignoring categories set their state in new zset and delete cid:<cid>:ignorers

* fix: upgrade

* fix: tests

* fix: redis count

* fix: more tests
6 years ago
Barış Soner Uşaklı 8169739069 fix: #7108 6 years ago
Barış Soner Uşaklı 62f01a839e fix: dont save data for non-positive uids 6 years ago
Julian Lam 5f3d1c76c8
fix: #7038, autoLocale logic not playing nicely with no-refresh auths (#7059)
* fix: #7038, autoLocale logic not playing nicely with no-refresh auths

- on login, req.query.lang is deleted (since it seems to be left over)
- on logout, the middleware.autoLocale is executed, which resets
  req.query.lang
- middleware.autoLocale is new, just refactored existing logic in
  webserver.js into new middleware method.

* style: tests, use lodash

* fix: timeago strings not switching languages on login or out
6 years ago
Barış Soner Uşaklı f581c052ee feat: #7023
- add category selector to privileges and category create modals
- allow category selector to work for multiple selectors on same page
6 years ago
Barış Soner Uşaklı a63ddbe2aa fix: #7040
if category doesn't exist return null and 404
6 years ago
Barış Soner Uşaklı 1f918ca8f8
Home route (#7039)
* fix: WIP home fix

* remove console.log

* fix: #6949

on redis run all tests in subfolder /forum
fix URI errors
fix sping/ping
6 years ago
Baris Usakli b86f155690 fix: #7037 6 years ago
Peter Jaszkowiak ba619c7ec8 style(eslint): match operator-linebreak preferences 6 years ago
Peter Jaszkowiak 89c025d102 feat: close #7002, console message if mismatched origins 6 years ago
Barış Soner Uşaklı 00a066985a cache categories:cid and cid:<cid>:children
these rarely change, no need to go to db for them
6 years ago
Barış Soner Uşaklı 1d5816b00a add new hook `filter:unread.categories` 6 years ago
Barış Soner Uşaklı d0750bc587 closes #7007 6 years ago
Barış Soner Uşaklı 53ad2bbd6e
Categories optimize (#6999)
* WIP

* fix category page

* fix counts, and copyPrivileges

* fix lint

* more fixes,

* redis fix

* fix test

* fix  category test

* remove getParentsAndChildren
6 years ago
Barış Soner Uşaklı 69ef05707a style 6 years ago
Barış Soner Uşaklı 01c942fc39 closes #6989 6 years ago
Barış Soner Uşaklı fc1c4acccf closes #6960 6 years ago
Baris Usakli b83e50f286 remove delayImageLoading from api @julianlam 6 years ago
Barış Soner Uşaklı 94e10c8c32 closes #6972 6 years ago
Peter Jaszkowiak 57b39d5ba2 fix(acp): small UI fixes for ACP privileges category selector (#6946)
- Add dropdown chevron
- Change translations
- Safety against `category` not an object
6 years ago
Barış Soner Uşaklı 7dabd13fea remove unused 6 years ago
Barış Soner Uşaklı de14102ee7 Merge branch 'master' of https://github.com/NodeBB/NodeBB 6 years ago
Barış Soner Uşaklı d9452bf3d4 fix: custom navigation item not showing groups 6 years ago
Julian Lam b3f96d28aa fix(acp): hard-to-discover dropdown selector in ACP
Made the dropdown an MDL button fab with better positioning via
a p.lead so that it is more easily discoverable and obvious that
it is a button that can be pressed.

Fixes #6899
6 years ago
Barış Soner Uşaklı 69bb3293ee misc fixes
handle spider uids properly
6 years ago
Barış Soner Uşaklı b6771836cf closes #6937 6 years ago
Baris Usakli 2ee743d65c add itemsPerPage to search api 6 years ago
Baris Usakli 62787368c6 add searchonly option to searh api 6 years ago
renovate[bot] 64b9dabff8 chore(deps): update dependency eslint-config-airbnb-base to v13 (#6599)
* chore(deps): update dependency eslint-config-airbnb-base to v13

* chore: #6599, linting 😬
6 years ago
Julian Lam 501b3a79ca
Refactor skins to be built on server-side (#6849)
* WIP

* using bootswatch from npm instead of bootswatch CDN url

* feat: on-demand client css building for skins

* added ability for client-side to select a skin

* updated loading and saving logic of bootstrapSkin on client side user settings

* fix: broken test for #6849
6 years ago
Julian Lam 84433f29ab
Do not require a full refresh on login/logout (#6841)
* no-refresh login as well, plus lots of fixes for missing config on login

* replace config with new set on logout as well

* passing new payload data into new action:app.loggedIn hook, and old action:app.loggedOut hook

* fixed issues with socket.io not properly representing uid on server

* some light refactoring and cleanup

* minor cleanup, fixed spa logout not working after login

* have reconnection handler for socket.io wait 2s to confirm disconnection before reporting -- stops flicker if reconnecting immediately

* Dynamically replace chat and slideout menu on updateHeader()

... instead of just the menu items.

* more efficient calls to Benchpress and translator /cc @pitaj

* fix: chats and notification handlers not working after login

* fix: accidentally calling cb multiple times
6 years ago
Julian Lam 3c8939a80d fix: interstitial redirects failing if done via ajaxify 6 years ago
Barış Soner Uşaklı 412358b070 #6903 6 years ago
Julian Lam 157bea6966 fix: username trim on login, closes #6894 6 years ago
Barış Soner Uşaklı ea1e8fb8fe Merge branch 'master' of https://github.com/NodeBB/NodeBB 6 years ago
Barış Soner Uşaklı c27be9db5a
Recent refactor (#6879)
* wip

* fix inf scroll

* remove duplicated code

* remove dupe code in /unread

* use topicList

* update tag page to use topicList

* fix tests

* combine ifs

* remove more dupe code

* disable timeout
6 years ago
Barış Soner Uşaklı 66ed48e088 closes #6875 6 years ago
Julian Lam 4919e9efa3 feat: allow disabling of GDPR features via ACP toggle, closes #6847 6 years ago
Barış Soner Uşaklı f3a679e268 remove parseInts 6 years ago
Barış Soner Uşaklı 9c03881d5a add threshold for image resizing 6 years ago
Barış Soner Uşaklı 44a957faca remove more parseints 6 years ago
Barış Soner Uşaklı 537b7ff7e8 remove more parseInts 6 years ago
Barış Soner Uşaklı 7a44424214 parse '123' to 123 if it has no default 6 years ago
Baris Usakli 881185ae59 closes #6857 6 years ago
Barış Soner Uşaklı ab7657d445 closes #6854 6 years ago
Barış Soner Uşaklı ac39112271 remove more parseInts 6 years ago
Barış Soner Uşaklı 9c022afae1
Parse int (#6853)
* Store config fields as JSON in the db

Fewer parseInts

* Remove unnecessary parseInts

* remove some dupe code add tests

* remove console.log

* remove more parseInts

* WIP: read meta.configs defaults from defaults.json

remove more parseInts

* more work

* add log for failing test

* update admin pwd

* fix tests, dont require posts/cache before configs are initialized

* handle saves

* Test boolean conditions

* remove more parseInts

* Fix boolean values

* remove lots more parseInts

* removed json parsing

* renamed var to number

* categories dont have timestamp
6 years ago
Barış Soner Uşaklı ee2f9e9434 remove some parseInts 6 years ago
Barış Soner Uşaklı f5fe91286e closes #6851 6 years ago
Barış Soner Uşaklı 26d4e0852f use includes instead of indexOf
use _.uniq instead of filter&indexOf
6 years ago
Barış Soner Uşaklı 6c15aee888 add cache hits/misses to posts cache 6 years ago
Barış Soner Uşaklı b57db7fd8e
update groups join to take array of group names (#6834)
* allow groups.join to take an array of group names

* pass an array to groups.join/leave in privileges

* split up groups/membership

* add hits/miss to group cache

* fix typo
6 years ago
Barış Soner Uşaklı cf1173b0c4 closes https://github.com/NodeBB/nodebb-theme-persona/issues/408 6 years ago
Barış Soner Uşaklı a3d463916c closes #6822 6 years ago
Baris Usakli 3886a704e0 fix lint 6 years ago
Baris Usakli 84737b5a49 use buildForSelect 6 years ago
Baris Usakli 71905bb2c6 fix watched categories 6 years ago
Baris Usakli 9ed4239d8e small changes and test for user/:slug/categories 6 years ago
André Zanghelini 523a2dc54c Add settings page to control watched categories (#6648)
* Add settings page to control watched categories

* Fix passing undefined to pushUnreadCount
6 years ago
Barış Soner Uşaklı b58ab48485 add test for /sessions controller 6 years ago
Barış Soner Uşaklı 49ba5af5fa
closes #6810 (#6813) 6 years ago
Barış Soner Uşaklı 77beaf2e15
Allow local login,closes #6800 (#6803)
* WIP

* reset groups cache after every suite
7 years ago
Baris Usakli edefab1d69 closes #6728
add option to disable a category on creation
show disabled categories on manage privileges
7 years ago
Barış Soner Uşaklı 59b988a205 change test so it checks url 7 years ago
Barış Soner Uşaklı b7ead6dc9c
Replace jimp with sharp (#6774)
* add probe image size and max image size

* replace jimp and image-probe with sharp

* better name for test

* resize with just path

* resize thumb inplace

* use filename
7 years ago
Julian Lam 382d06bbb0 fixes #6765 -- no need to have gmods and admins access login sessions page 7 years ago
Barış Soner Uşaklı b43bfa3d5b closes #6759
-moved user.blocks.filter from unread controller to getUnreadTopics so
topics are filtered at other places this function is called
- when a new post is made do not send it to uids that have blocked the
poster
- update getUnreadTids so it does not return topics that have new posts
from blocked users
- update hasReadTopics so it does not return false data if topic has new
posts from blocked users
7 years ago
Barış Soner Uşaklı 41aae6f418 closes #6749 7 years ago
Barış Soner Uşaklı 446b125c83 escape post content 7 years ago
LudwikJaniuk c7f3b76b4e DRY req props that depend on auth (fix #6727) (#6731)
* DRY req props that depend on auth (fix #6727)

authentication leads to req.loggedIn and req.uid being set. However, a
later authentication event might outdate them. Here, I create one
function for setting those properties, and make sure it also is called
on the `action:middleware.authenticate` hook, which would be such an
authentication event. If there are other places, those should be added
as well.

* fix lint errors

* fix lint error

* change exports
7 years ago
Barış Soner Uşaklı 3e1b007f9f escape title in post queue 7 years ago
Julian Lam c2c925cacd closes #6678 7 years ago
Julian Lam 29836aaad9 rename session account middleware to sessions, plural, prep for fixing #6678 7 years ago
Barış Soner Uşaklı ae4016d9e0 add getCateries to helpers 7 years ago
Julian Lam f751d21d1e removed debug line 7 years ago
Julian Lam a77630c6be closes #6697 7 years ago
Ben Lubar 33228bb7fe PostgreSQL database driver (#5861)
* [test/database/list] Fix test list 4 being used in two different tests

* [database/postgres] PostgreSQL database driver

* [database/postgres] Make transactions work based on continuation scope.

* [database/postgres] Implement nested transactions

* eslint --fix

* Add database changes from earlier this week to the PostgreSQL driver.

* Fix typo

* Fix postgres.incrObjectFieldBy returning undefined instead of null when given NaN

* [database/postgres] Fix sortedSetsCard returning an array of strings.

* Update socket.io postgres adapter

* Fix PostgreSQL erroring when multiple updates are made to the same sorted set entry in a single operation.

Add a test case to catch this error.

* Fix lint errors.

* Only prune sessions on one instance in a cluster to avoid deadlocks.

They're caught and handled by the database server, but they spam the logs.

* Fix arguments.slice.
7 years ago
Julian Lam 3c6c0ed7a1 restoring passwordExpiry for use in continueLogin, fixed tests, hopefully 7 years ago
Julian Lam b6a5419ca1 closes #6674 7 years ago
Julian Lam 4f8815eb78 closes #6646 7 years ago
Ben Lubar f1a6537fc2 Add notification frequencies from nodebb-plugin-upvote-notifications. (#6640)
* Add notification frequencies from nodebb-plugin-upvote-notifications.

https://github.com/boomzillawtf/nodebb-plugin-upvote-notifications

* Fix editing settings clearing upvote notification preferences.
7 years ago
Baris Usakli cc6a683bc4 closes #6631 7 years ago
Julian Lam 7a53fa9469 Added block and unblock button to profile dropdown menu, #6560 7 years ago
Julian Lam f09b1acfb7 closes #6627 7 years ago
Barış Soner Uşaklı 9912c400b6 closes #6612 7 years ago
Barış Soner Uşaklı 95f1a82884 closes #6591 7 years ago
Barış Soner Uşaklı bc437c8da3 fix popular rss feed url 7 years ago
Barış Soner Uşaklı ccad95cf73 closes #6579 7 years ago
Barış Soner Uşaklı e7cd552e33 closes #6568 7 years ago
Peter Jaszkowiak 70ff2d9b88 Support scoped theme packages 7 years ago
Barış Soner Uşaklı 0b0ce1df8a closes #6549 7 years ago
Barış Soner Uşaklı d31d8fa806 move category pageview to controllers
so topic views are tracked as category views
7 years ago
Barış Soner Uşaklı 7df57ba7a7 remove dupe code 7 years ago
Julian Lam 4e7fdf3e12 Saving flag filters into session object
Closes #6533
7 years ago
Barış Soner Uşaklı b0dad9bd7f closes #6369 7 years ago
Barış Soner Uşaklı 11bb2f1560 closes #6528 7 years ago
Barış Soner Uşaklı d7acec260f closes #6530 7 years ago
Barış Soner Uşaklı 6eea11a4fd closes #6529 7 years ago
Barış Soner Uşaklı a7267df404 closes #6464 7 years ago
Barış Soner Uşaklı 229e49cf8f closes #6523, closes #6524 7 years ago
Barış Soner Uşaklı 65dc530df5 some controller tests 7 years ago
Julian Lam be1a977c71 fix post export crashing if a pid reference doesn't resolve to an actual post object 7 years ago
Barış Soner Uşaklı e29e0a98f5 closes #6515 7 years ago
Julian Lam d648e55493 closes #6494 7 years ago
Julian Lam d1fd07f42f remove console.log, #6486 7 years ago
Julian Lam 18bde866ff Append file name to the JSON payload returned
... during file upload process... closes #6486
7 years ago
Barış Soner Uşaklı cc3569bf51 closes #6491 7 years ago
Julian Lam f2d3111114 disable strict checking of object schema in post upload CSV generation, #6490 7 years ago
Julian Lam 44f8e6d3bb Revert "closes #6483"
This reverts commit 5d198491d5.
7 years ago
Barış Soner Uşaklı 1f8b000530 log and show last restart on ACP dashboard 7 years ago
Julian Lam 5d198491d5 closes #6483 7 years ago
Julian Lam 99f1a5380e closes #6483 7 years ago
Julian Lam c9d8fc3f58 one more minor fix to req.flash err 7 years ago
Julian Lam 4533a311e1 possible fix to req.flash err crash 7 years ago
Julian Lam dc386b5b23 Merge branch 'master' into user-blocking 7 years ago
Julian Lam 8db98b5cf4 additional UCP integration for #6463 7 years ago
Barış Soner Uşaklı 7e00d6b91e https://github.com/NodeBB/NodeBB/issues/6433 7 years ago
Julian Lam 3951bb9532 Merge remote-tracking branch 'origin/master' into user-blocking 7 years ago
Julian Lam 7089e5c6a6 Merge remote-tracking branch 'origin/master' into develop 7 years ago
Barış Soner Uşaklı 6659a520e0 closes #6465 7 years ago
Julian Lam ca932d30d2 basic UCP integration #6463 7 years ago
Julian Lam 4f6cc20457 completed basic integration for #6463 7 years ago
Andrew Rodrigues 0971625e63 allow global mods to still login locally as well as admins if disabled in ACP 7 years ago
Julian Lam fc3ecedf7c Merge remote-tracking branch 'origin/master' into develop 7 years ago
Julian Lam 777d9aeee6 implement proper file sorting by mtime in ACP uploads 7 years ago
Julian Lam 388765bdf9 added post usage column to uploads ACP page
re: #6455
7 years ago
Julian Lam 03dd9dd49b fixed up relative pathing issue in ACP uploads again 7 years ago
Julian Lam 364ded4f8e Merge remote-tracking branch 'origin/master' into develop 7 years ago
Barış Soner Uşaklı 501d02220c closes #6456 7 years ago
Julian Lam 67dec83011 profile export for #6441 + integration 7 years ago
Julian Lam a6564b7b4e endpoint to download user attachments, #6441 7 years ago
Barış Soner Uşaklı 5d2a7106f6 change upload storage 7 years ago
Julian Lam 7ba2ac9f69 Merge remote-tracking branch 'origin/master' into develop 7 years ago
Julian Lam 90a99fe158 closes #6442 7 years ago
Julian Lam 2e6e7f7484 posts export endpoint for GDPR, re: #6441 7 years ago
Barış Soner Uşaklı 927537c759 #6431 add private upload info 7 years ago
Julian Lam 8e822c7772 Added user consent pages (#6430)
- "Your Rights & Consent" user settings page
7 years ago
Barış Soner Uşaklı 7cd004ca23 user uploads route 7 years ago
Barış Soner Uşaklı 04979f86a8 delete users uploads on account delete
store uid:<uid>:uploads
7 years ago
Julian Lam e9ed7f0bb3 closes #6435 7 years ago
Barış Soner Uşaklı 47606c8df5 merge 7 years ago
Barış Soner Uşaklı 0070f5c1b2 Merge remote-tracking branch 'refs/remotes/origin/master' into develop 7 years ago
Barış Soner Uşaklı df770aed8e closes #6416 7 years ago
Julian Lam c1aa46c663 added new option to disable post diffs /cc @BenLubar 7 years ago
Barış Soner Uşaklı 749b282cdd add matchwords to search api 7 years ago
Barış Soner Uşaklı 2faaf5b35f closes https://github.com/julianlam/nodebb-plugin-mentions/issues/99 7 years ago
Julian Lam 9aa9183cc3 implementing zxcvbn in reset-code tpl, re: #6400 7 years ago
Barış Soner Uşaklı 6ebaa800fe fix popular cache for guests 7 years ago
Barış Soner Uşaklı b1ccd04ffc closes #6386 7 years ago
Peter Jaszkowiak eaae5b52cd ACP quick actions (#6374)
* ACP quick actions

- Moved restart, build & restart, and logout into separate buttons
- Moved buttons on mobile into the side menu
- Added version and upgrade alert to header / mobile menu
- Moved version checking to server-side with a cache for rate limiting
- Changed "reload" translations to "rebuild and restart"

* Change info alert to black-on-white to match focused search bar

* Fix tests

* Fallback for failed fetch of latest version
7 years ago
Barış Soner Uşaklı dcb6af5768 closes #6373 7 years ago
Julian Lam a126f07471 closes #6043 7 years ago
Baris Usakli a5cceabc89 dont go below 0 7 years ago
Julian Lam c93f943bef Merge branch 'develop' 7 years ago
Barış Soner Uşaklı e1c6761087 closes #6258 7 years ago
Barış Soner Uşaklı 7b45a6ea8b Merge remote-tracking branch 'refs/remotes/origin/master' into develop 7 years ago
Baris Usakli 1c24c34d04 add missing comma 7 years ago
Baris Usakli d25eb674c6 make climate happy 7 years ago
Julian Lam a8ec6a4a9c patching accidental leakage of full path of uploaded file when uploading pictures or attachments 7 years ago
Julian Lam c25d752573 Merge remote-tracking branch 'origin/master' into develop 7 years ago
Barış Soner Uşaklı c7b73b4e41 closes #6337 7 years ago
Julian Lam 52678621f9 revising minimum password strength to be 1 instead of 0 7 years ago
Julian Lam 1ce448f2a1 Merge remote-tracking branch 'origin/master' into develop 7 years ago
Barış Soner Uşaklı 15e9bbac92 closes #6311 7 years ago
Barış Soner Uşaklı 723f31a362 closes #6323 7 years ago
Barış Soner Uşaklı 7b6282f530 closes #6308 7 years ago
Julian Lam f7c412882a add reset routes to robots.txt disallow 7 years ago
Barış Soner Uşaklı ac1f7eefe5 closes #2304 7 years ago
Julian Lam 897a7d84f9 Merge remote-tracking branch 'origin/master' into develop 7 years ago
Julian Lam 7581dd1174 Closes #6245
- Moved account info to within the profile menu hook, so it can be
  better filtered and shown to mods
- Also serves as a nice template for plugins that wish to listen
  to the profileMenu hook!
7 years ago
Julian Lam fbf52407fd Re: #6425
- Exposing IP addresses to moderators
7 years ago
psychobunny 212486d230 hide topic upvotes on category page when rep system is disabled 7 years ago