1572 Commits (b551b0ad47d63bfe1f59c99a91476e06a2eec2a7)

Author SHA1 Message Date
Barış Soner Uşaklı 9fbb3b11ef perf: only load posts once 3 years ago
Barış Soner Uşaklı 5a0efd2d42 fix: don't use # for previews 3 years ago
Barış Soner Uşaklı 8c67031609 feat: show posts previews if enabled on mouse over 3 years ago
Barış Soner Uşaklı a7f235dbac fix: topic events not rendered in infinitescroll 3 years ago
Barış Soner Uşaklı e8c17feedb refactor: use utils.debounce 3 years ago
Barış Soner Uşaklı 50b2ebf844 fix: remove unused code 3 years ago
Julian Lam 5a328485dd Revert "fix: only show email confirmation warning toast on pages that it applies"
This reverts commit 1bd1cc74a4.
3 years ago
Barış Soner Uşaklı 64192731a0 refactor: use search api for topic search 3 years ago
Barış Soner Uşaklı 47df62e700 fix: clicking outside postContainer should close tooltip 3 years ago
Barış Soner Uşaklı fec7ebed04 fix: tooltip 3 years ago
Barış Soner Uşaklı 66fca4e066 feat: quote tooltip 3 years ago
gasoved b0a24d6dd5
refactor: var to const and let (#9885)
* refactor: var to const and let

* fix: missed global bootbox usage

* refactor: align with eslint expectations
3 years ago
gasoved 227456fb17
fix: no global bootbox (#9879)
* fix: require bootbox (easy ones)

* fix: require bootbox (ugly ones)

* fix(eslint): a lengthy line
3 years ago
Barış Soner Uşaklı 96f5312de9 fix: #9865, don't display register messages after login 3 years ago
Barış Soner Uşaklı a7668a7fb1 refactor: use utils.debounce
fixes socket message spam in chat resize
3 years ago
Barış Soner Uşaklı 4404e81991
fix: switch inf. scroll to xhr (#9854)
this fixes infinitescroll when url has custom query parameters
also fixes infinitescroll for plugins like QnA
fixes infinitescroll on tags page
deprecate topics.loadMoreSortedTopics
deprecate topics.loadMoreFromSet
3 years ago
Barış Soner Uşaklı 9f0e55ad3e fix: #9819, show same time info for ban 3 years ago
Barış Soner Uşaklı 75ebe78619 fix: escape moderation note before adding to dom 3 years ago
Julian Lam 66eaae44a6 feat: add client-side static hook to fire immediately before any topic action (hint: delete `action` to stop default behaviour) 3 years ago
Barış Soner Uşaklı 6a55c02702 fix: #9790, get baseIndex on update for infinitescroll 3 years ago
Barış Soner Uşaklı 2657804c1f fix: #9790, fix sorting of more than one page of pinned topics 3 years ago
Julian Lam 1bd1cc74a4 fix: only show email confirmation warning toast on pages that it applies 3 years ago
psychobunny ae793b4a44 chore: found some hooks that don't play well docgen 4 years ago
Julian Lam 55693ec1b0 fix: lint 4 years ago
Julian Lam e803737a4b feat: add confirmation modal to topic event deletion 4 years ago
Julian Lam 152f194aee
Server-side rendering of topic events (#9733)
* style: reformat list of helpers exported

* refactor: move topic events partial into a helper, invoke helper in topic.tpl (see persona), update how events are added to the DOM via addTopicEvents

closes #9731

* style: lint
4 years ago
Barış Soner Uşaklı 60bf564321 fix: #9729, insert new posts after topic events 4 years ago
Barış Soner Uşaklı 794bf01b21 feat: allow changing default search in 4 years ago
Anton Grigoryev 342503e07a
Feat: Client-side hooks - replace window.trigger (#9679)
* feat/clientside-hooks: replace window.trigger with hooks.fire

* feat(clientside-hooks): Move hooks require to the top

* fix: simplifying complex logical expression

* fix: client-side hook for translator - post-review fixes
4 years ago
Barış Soner Uşaklı 8bf2896d6c fix: lint 4 years ago
Barış Soner Uşaklı 358ad74054 feat: closes #9684, allow event deletion
fix: topic events appearing before necro messages
feat: add move topic event
feat: add ability to delete specific topic events via events.purge
4 years ago
Julian Lam 0e05cbe1f7 feat: show instructional modal after email change request 4 years ago
gasoved a917210c5b feat: invites no longer require email 4 years ago
Julian Lam 7c1d1c777b refactor(emails): remove email validation on client and server side 4 years ago
Julian Lam 12b2a979a0 feat: removal of emailExists socket listener 4 years ago
Julian Lam ef4e74bfc8 refactor: client-side to use flag notes API 4 years ago
Julian Lam cc6cbfcdc4
Flags API (#9666)
* feat: new routes for flags API

+ flag get
+ flag creation, migration from socket method
+ flag update, migration from socket method
* fixed bug where you could not unassign someone from a flag

* feat: tests for new flags API

added missing files for schema update

* fix: flag tests to use Write API instead of sockets

* feat: flag notes API + tests

* chore: remove debug line

* test: fix breaking test on mongo
4 years ago
Julian Lam 09bac6bd7e fix: convert some hooks to use hooks module
re: julianlam/nodebb-plugin-markdown#130
4 years ago
Barış Soner Uşaklı 7b4c0a1683 fix: keep query params when switching chat 4 years ago
psychobunny e588948ff5 feat: add undoTimeout to moving posts as well #9599 4 years ago
psychobunny 05cc7ccb60 feat: make undoTimeout configurable, closes #9599 4 years ago
Mats c448ba6f5a
Fixes flag note editing, deletion, and template update (#9581)
* Fixes flag note editing, deletion, and template update

Flag note datetime should be int.
Corrects argument order for note reloading.

* Chore: add missing radix

* fix: empty append bug

This line results in an error message popping up when clicking the flag notes text box, as the 'appendNote' case fires with no text. I can't tell that it serves any function.
4 years ago
Mats f9b248b87f fix: updates navigation menu user icon 4 years ago
Mats e6ef094079
Re-enable "change username" button after failed attempt (#9568)
* Re-enable "change username" button after failed attempt

* chore: proper indentation
4 years ago
gasoved cb1dd0a3db
fix: infinite scroll with small number of items #9524 (#9525) 4 years ago
gasoved 8faa6e4515
feat: filter flags by username #8489 (#9451)
* feat: filter flags by username #8489

* feat: toggle flag filter text
4 years ago
psychobunny e50408b461 fix: restore original behavior for up/downvoting when logged out 4 years ago
psychobunny 60eed8d89f fix: let recent replies respect oldest/newest sort settings 4 years ago
Barış Soner Uşaklı dbb59228f2 feat: add action:posts.loaded 4 years ago
gasoved aa0137b1c4
feat: rescheduling (editing ST) (#9445) 4 years ago
psychobunny 01f63e5d58 fix: change email button stays disabled if user submitted an invalid email 4 years ago
psychobunny cfdef77b28 fix: use app.logout() to clear session after deleting user
I think this was originally changed when we added logging in/out without refreshing, but didn't change this back after reverting that feature
4 years ago
gasoved 077330b764
feat: scheduled topics (#9399)
* feat: scheduled topics

* refactor: linting fixes

* fix: tests

* fix(test): race condition

* fix: make a single request
4 years ago
Barış Soner Uşaklı 262e059fa6 fix: inf scroll with subfolder install 4 years ago
Barış Soner Uşaklı 617f4730a0 fix: crash if unreadTopics is undefined 4 years ago
Barış Soner Uşaklı f45c0aab51 fix: dont crash if login el doesnt exist 4 years ago
Barış Soner Uşaklı 52082e1296 feat: add resolve flag to post tools 4 years ago
Julian Lam 98bf4064e7 refactor: account edit logic and template, closes #9364 4 years ago
Barış Soner Uşaklı 696c489524 feat: add back topic id input 4 years ago
Julian Lam beaac0a1ab fix: allow hidden inputs in user settings page 4 years ago
Julian Lam 28f6931e16 refactor: move picture change client-side logic to its own rjs module 4 years ago
Julian Lam 955021247e feat(user): icon background selector in change picture modal 4 years ago
Barış Soner Uşaklı fa91525a6d fix: use bootbox module 4 years ago
Barış Soner Uşaklı 3595473485 feat: load user posts/topics via xhr on infinitescroll 4 years ago
Peter Jaszkowiak cc9d6fd08b chore: eslint max-len 4 years ago
Peter Jaszkowiak 62869bae3d chore: eslint function-paren-newline 4 years ago
Barış Soner Uşaklı 0cca6893f3 fix: #9275, 4 years ago
Barış Soner Uşaklı 550cd995e8 fix: remove console.log 4 years ago
Barış Soner Uşaklı a4878a5b22 fix: markread selector 4 years ago
Barış Soner Uşaklı 3090a2aee4 fix: position when scrolling up
if sorting is newest to oldest scrollTop wont be changed if you are at the top of the page
4 years ago
Barış Soner Uşaklı 47299ea587
Categories refactor (#9257)
* feat: wip categories pagination

* feat: add subCategoriesPerPage setting

* feat: add load more sub categories button to category page

* fix: openapi spec

* feat: show sub categories left on category page

hide button when no more categories left

* breaking: rename categories to allCategories on /search

categories contains the search results

* fix: spec

* refactor: remove cidsPerPage

* fix: tests

* feat: use component for subcategories

* fix: prevent negative subCategoriesLeft

* feat: new category filter/search WIP

* feat: remove categories from /tag

* fix: dont load all categories when showing move modal

* feat: allow adding custom categories to list

* breaking: dont load entire category tree on post queue

removed unused code
add hooks to filter/selector
add options to filter/selector

* feat: make selector modal work again

* feat: replace old search module

* fix: topic move selector

* feat: dont load all categories on create category modal

* fix: fix more categorySelectors

* feat: dont load entire category tree on group details page

* feat: dont load all categories on home page and user settings page

* feat: add pagination to /user/:userslug/categories

* fix: update schemas

* fix: more tests

* fix: test

* feat: flags page, dont return entire category tree

* fix: flag test

* feat: categories manage page

dont load all categories
allow changing root category
clear caches properly

* fix: spec

* feat: admins&mods page

dont load all categories

* fix: spec

* fix: dont load all children when opening dropdown

* fix: on search results dont return all children

* refactor: pass all options, rename options.cids to options.selectedCids

* fix: #9266

* fix: index 0

* fix: spec

* feat: #9265, add setObjectBulk

* refactor: shoter updateOrder

* feat: selectors on categories/category

* fix: tests and search filter

* fix: category update test

* feat: pagination on acp categories page

show order in set order modal

* fix: allow drag&drop on pages > 1 in /admin/manage/categories

* fix: teasers for deep nested categories

fix sub category display on /category page

* fix: spec

* refactor: use eslint-disable-next-line

* refactor: shorter
4 years ago
Julian Lam 67e3fb6498 fix: register returnTo logic to match login route
Login route saves the previous page by checking for the X-Return-To header. This header is automatically set by ajaxify.
Login takes this value and saves it to `req.session`.

Up until now, `/register` saved the previous URL in a hidden input, and redirected based on that value, but it occasionally conflicted with req.session.returnTo. It was also confusing because it did not match how login handled the values.

This commit updates the route handling so it works identically to `/login`.
4 years ago
gasoved a2a7557cc0 refactor: update dom after diff deletion better 4 years ago
gasoved 4447a64eaa refactor: removed 3 lines 4 years ago
gasoved eb642f40b9 feat: #9109, ability to delete a post's diffs 4 years ago
psychobunny 58655e9a0b fix: invalid API call when unfollowing a user 4 years ago
Barış Soner Uşaklı d1364c3130
Categories refactor (#9233)
* feat: wip categories pagination

* feat: add subCategoriesPerPage setting

* feat: add load more sub categories button to category page

* fix: openapi spec

* feat: show sub categories left on category page

hide button when no more categories left

* breaking: rename categories to allCategories on /search

categories contains the search results

* fix: spec

* refactor: remove cidsPerPage

* fix: tests

* feat: use component for subcategories

* fix: prevent negative subCategoriesLeft
4 years ago
Julian Lam 4bb3b0323d feat: guard password fields in login/register against accidental caps lock 4 years ago
Julian Lam 8e93bf7362 feat(topic-events): client-side handling on topic event log 4 years ago
Julian Lam df2fdd56ba fix(topic-events): repeated invocations of Posts.addTopicEvents caused dupes to be added to DOM 4 years ago
Julian Lam 9559fad8ac refactor(topic-events): expose addTopicEvents method in topic posts lib
+ allow it to accept an array of events, or fall back to ajaxify data otherwise
4 years ago
Julian Lam 882e6a159c feat(topic-events): handle newest_to_oldest sort in topic events, WIP 4 years ago
Julian Lam ab2e1ecb40 feat(topic-events): work in progress topic events logic and client-side implementation 4 years ago
Julian Lam 966c4117ec refactor(api): post move to write API 4 years ago
Barış Soner Uşaklı 0fa4c11ea6 fix: don't chagne scrollTop if at the top of page 4 years ago
Julian Lam e118e59ce0 refactor(api): post diffs to use write API 4 years ago
Barış Soner Uşaklı 183cabe90f fix: #9150, fix selector so it doesn't add img-responsive to profile pics 4 years ago
Julian Lam 32e36f7b2e feat(api): group ownership API route, switch client-side to use API route 4 years ago
Julian Lam 1cd2689cf6 refactor(api): deprecated groups update socket in favour of API lib 4 years ago
Julian Lam e640a41a78 refactor(api): update group deletion calls to use write API 4 years ago
Barış Soner Uşaklı 2ef72a94c2 fix: #9136, fix move topic/post timeout errors 4 years ago
Barış Soner Uşaklı b7b588f5c8 fix: trigger action:posts.edited 4 years ago
Barış Soner Uşaklı feecd66506 fix: api usage 4 years ago
Barış Soner Uşaklı a15ef53c70 feat: add new client side hooks 4 years ago
Barış Soner Uşaklı 3ed55799ab fix: #9114, fix client side groups update for memberPostCids 4 years ago
Barış Soner Uşaklı 6669496dba
Navigator (#9049)
* feat: navigator changes

* fix: remove extra code

* feat: add lang keys
4 years ago
Barış Soner Uşaklı 5f0f476b57 feat: #9005, use timestamp in profile/cover images
delete current one if keepAllUserImages is turned off
fix typo in data
4 years ago
Barış Soner Uşaklı 954dc5b7be feat: #8983, update pin tooltip in topic 4 years ago
Barış Soner Uşaklı 1269103fbb fix: #8984, post-queue ux 4 years ago
Barış Soner Uşaklı 4c7374ea33 fix: flicker on tooltips if server call takes long time 4 years ago
Julian Lam e1432caf92 feat: add cancel button to pin expiration modal 4 years ago
Julian Lam 15c6f32c93 refactor: pin/lock threadTools to use topicCommand, rewrote topicCommand to match categoryCommand signature 4 years ago
Barış Soner Uşaklı c037779fa1 feat: add topicOwnerPost #8778 4 years ago
Julian Lam d584516947 fix: #8943, session mismatch modal thrown on login (race condition) 4 years ago
Barış Soner Uşaklı f20c12ee40 fix: add client side check for userslug #8939 4 years ago
Barış Soner Uşaklı cf903e4e8f fix: #8931, fix lang string 4 years ago
Barış Soner Uşaklı 95a3f03009 fix: #8932, fix client side error when updating username 4 years ago
Julian Lam 046d0b1637
feat: allow pins to expire (if set) (#8908)
* fix: add back topic assert middleware for pin route

* feat: server-side handling of pin expiries

* refactor: togglePin to not require uid parameter [breaking]

* feat: automatic unpinning if pin has expiration set

* feat: client-side modal for setting pin expiration

* refactor: categories.getPinnedTids to accept multiple cids

... in preparation for pin expiry logic, direct access to *:pinned zsets is discouraged

* fix: remove references to since-removed jobs file for topics

* feat: expire pins when getPinnedTids is called

* refactor: make the togglePin change non-breaking

The 'action:topic.pin' hook now sends uid again, as before. However, if it is a system action (that is, a pin that expired), 'system' will be sent in instead of a valid uid
4 years ago
Julian Lam 00aee84bf7
refactor: use categoryCommand local method for pin/lock in category tools (#8917)
* refactor: use categoryCommand local method for main actions in category tools

* fix: wrong command passed in
4 years ago
Barış Soner Uşaklı e9585b9be2 fix: group userTitles translation escapes 4 years ago
Barış Soner Uşaklı 1d6bcbebde feat: https://github.com/NodeBB/NodeBB/issues/8147 4 years ago
Julian Lam d83eb7f89e refactor: client-side handlers for user invitations
DRY
4 years ago
gasoved 3ccebf112e
feat: invites regardless of registration type, invite privilege, groups to join on acceptance (#8786)
* feat: allow invites in normal registration mode + invite privilege

* feat: select groups to join from an invite

* test: check if groups from invitations have been joined

* fix: remove unused variable

* feat: write API versions of socket calls

* docs: openapi specs for the new routes

* test: iron out mongo redis difference

* refactor: move inviteGroups endpoint into write API

* refactor: use GET /api/v3/users/:uid/invites/groups

Instead of GET /api/v3/users/:uid/inviteGroups

* fix: no need for /api/v3 prefix when using api module

* fix: tests

* refactor: change POST /api/v3/users/invite

To POST /api/v3/users/:uid/invites

* refactor: make helpers.invite awaitable

* fix: restrict invite API to self-use only

* fix: move invite groups controller to write api, +tests

* fix: tests

Co-authored-by: Julian Lam <julian@nodebb.org>
4 years ago
Barış Soner Uşaklı 9dac9630df fix: check tid in event handlers client side 4 years ago
Julian Lam 769aba0aed fix: refresh flags list on bulk action success 4 years ago
Julian Lam f300c933a5 refactor: move session revocation route to write api 4 years ago
Barış Soner Uşaklı 9f7902efdf fix: remove some unnecessary jquery wrappers 4 years ago
Peter Jaszkowiak e128264b66
refactor: change Benchpress.parse to .render (#8856)
It has been deprecated with no warning message for a while
Changing these over before enabling the warning message to reduce spam
4 years ago
Julian Lam d263192271 feat: group exists API call in write api 4 years ago
Julian Lam 1446cec77f feat: user exist route in write api 4 years ago
Julian Lam 1afd215050 feat: add back error handling for a number of api calls 4 years ago
Barış Soner Uşaklı 715775a707 feat: #8817, add login clientside hooks
same as logout
4 years ago
Julian Lam a08fb8e53b fix: removed superfluous assignment 4 years ago
Julian Lam 0b6ef61e40 fix: createNewPosts to build tpl with ajaxify.data
If the post template contains references to items outside of the scope of the post, then when the post is loaded via IS, the expected values are empty.

This was due to createNewPosts calling app.parseAndTranslate with a subset of the page payload. This works fine in Persona (and most other themes)
because they do not refer to properties outside of the post object, but it may be helpful to include the rest of the ajaxify data as well.
4 years ago
Barış Soner Uşaklı 9082062e90 fix: sort setting not using correct field name 4 years ago
Julian Lam c26f2b6599 feat(writeapi): user settings API 4 years ago
Baris Usakli 1a4c0decb7 fix: reset button loading html 4 years ago
Barış Soner Uşaklı e6440c0d21 fix: #8779, fix move all
add new language keys
4 years ago
Barış Soner Uşaklı d9a16855d0 refactor: posts api 4 years ago
Barış Soner Uşaklı 272e73da53 refactor: post restore/delete/purge 4 years ago
Barış Soner Uşaklı 9738e20207 refactor: merge post.edit
fix: dont fadeout/fadeint if title/post didnt change
4 years ago
Barış Soner Uşaklı 2279e37261 refactor: deprecate socket.emit('users.search') use api route 4 years ago
Barış Soner Uşaklı 51a60d3d46 fix: handler for group.join 4 years ago
Julian Lam a784d10fff refactor: api module returns promise, error-first cb if cb passed in
no more separate onSuccess onError callbacks

/cc @baris
4 years ago
Barış Soner Uşaklı 4b9444f1a5 fix: avatar selector 4 years ago
Barış Soner Uşaklı 872bacf1c4
Admin/users (#8762)
* feat: wip admin/users

* feat: more work

* feat: more fixes

* feat: #8662, verified/unverified user groups

* feat: add filter

* feat: change user search to use filters array

* refactor: remove unused search call

* fix: tests

* fix: cant join system groups

* fix: upgrade script
4 years ago
Barış Soner Uşaklı dc29f4dca2 refactor: switch to using slugify module 4 years ago
Barış Soner Uşaklı eab7489ec5 feat: #8734, move deserialize/serialize to package.json 4 years ago
Barış Soner Uşaklı 948f26143c feat: #5964, #8734 remove colorpicker 4 years ago
Barış Soner Uşaklı c954db84e4 refactor: require style 4 years ago
Barış Soner Uşaklı 931d44b5e2 fix: undefined api require, @julianlam 4 years ago
Barış Soner Uşaklı e2d407b769 fix: watch tooltip 4 years ago
Barış Soner Uşaklı 8c019a6a3b fix: timeago locale switch 4 years ago
Barış Soner Uşaklı 420a312982 Merge branch 'master' of https://github.com/NodeBB/NodeBB 4 years ago
Barış Soner Uşaklı 3b231360d3 feat: load jquery-form before using 4 years ago
Barış Soner Uşaklı fda2aedfd8
feat: #8734, jquery-ui, jquery-form, timeago (#8748)
* feat: #8734, jquery-ui, jquery-form, timeago

get rid of forum/footer.js move that code to app.js & wait for app to load before calling ajaxify.end
make sockets.js a requirejs module
move jquery-ui to node_modules and load via requirejs
move jquery-form to node_modules and load via requirejs
move timeago to node_modules and load via requirejs
only include the css for needed jquery-ui widgets

* feat: keep socket/io global for backwards compat

* refactor: move socket listener to chat
4 years ago
Julian Lam 3ea1aa4780 refactor(writeapi): update route prefix to api/v3, default error option 4 years ago
Julian Lam 0973feea16 feat(writeapi): post bookmarking 4 years ago
Julian Lam 9942c248eb feat(writeapi): post voting 4 years ago
Julian Lam 414169fdfa feat(writeapi): post delete/restore/purge 4 years ago