Commit graph

167 commits

Author SHA1 Message Date
rr-
7648f479a9 client/posts: add 'skip duplicates' to upload form
Closes #102
2016-09-29 22:26:37 +02:00
rr-
7862fecbc9 client/posts: add upload cancelling 2016-09-29 21:55:20 +02:00
rr-
7fa8593b0a client/general: improve URL escaping
Specifically, cater for /, + and % in URL components.
2016-09-04 02:07:22 +02:00
rr-
acd989cabb client/tags: fix URL redirections
User controller didn't need intervention but I refactored it to match
tag controller anyway.
2016-08-28 23:57:53 +02:00
rr-
cf1d15354d client/paging: avoid redrawing header navigation 2016-08-28 23:40:28 +02:00
rr-
63e8683fb8 client/tags: change 'edit time' to 'created on' 2016-08-27 15:29:40 +02:00
rr-
495f98a65f client/auth: fix edit sidebar for management only 2016-08-23 23:14:05 +02:00
rr-
3ff48667a0 client/auth: fix swapped tag deleting and merging 2016-08-23 23:14:05 +02:00
rr-
34022d8fc8 client/auth: fix not hiding anonymity checkbox 2016-08-23 23:14:05 +02:00
rr-
e90b8972c7 client/auth: fix being able to rate/fav things 2016-08-23 23:12:29 +02:00
rr-
4ca7c49239 client/auth: fix masstag privilege bypass
Visiting mass-tag URL directly ignored masstag privileges and showed
tag/untag controls (although didn't show the controls in the header).
After this change, bypassing mass tag privileges got a little bit
harder. (It's still possible for the user to talk directly to the API
after all.)
2016-08-23 23:12:29 +02:00
rr-
1e9ee0838a client/auth: hide signup link in top nav if needed 2016-08-23 23:12:29 +02:00
rr-
08c6c2c145 client/auth: show errors early in controllers
In other words, verify the privileges client-side before issuing an
request to the server. This commit focuses on routing (e.g. clicking a
link while not logged in), rather than DOM element visibility that
should be already taken care of.
2016-08-23 23:12:29 +02:00
rr-
fec31d7946 client/users: add exit confirmation for edit form 2016-08-22 21:38:34 +02:00
rr-
ea947ed91e client/tags: add exit confirmation for edit form 2016-08-22 21:38:31 +02:00
rr-
d8d4654849 client/events: adjust event names
1. "change" should be used to passive changes.
2. "submit" should be used to form submits.

These are not interchangeable.
2016-08-22 21:36:45 +02:00
rr-
5bcf44aa2d client/posts: implement upload form 2016-08-21 23:43:36 +02:00
rr-
9014baab92 client/snapshots: add snapshots browser 2016-08-20 13:01:17 +02:00
rr-
46435182f6 client/posts: fix mass tag not sending version 2016-08-08 17:45:49 +02:00
rr-
1b62daed9a client/general: clean up, refactor 2016-08-05 23:02:41 +02:00
rr-
9304e309f6 client/settings: add posts per page option 2016-08-05 23:02:41 +02:00
rr-
0c64d1fe1c client/posts: add post deleting 2016-08-02 12:27:01 +02:00
rr-
179cf57cb9 client/posts: add post featuring 2016-08-02 12:27:01 +02:00
rr-
3176709288 client/posts: clear messages before submit
Saving the post twice resulted in two 'Post saved!' messages.
2016-07-31 23:55:22 +02:00
rr-
193e34aff8 client/posts: improve form behavior when saving
- Disable and enable the form
- Notify about success in the sidebar
- Notify about errors in the sidebar rather than using a native alert
2016-07-30 23:10:58 +02:00
rr-
76e9307449 client/tags: fix window title 2016-07-29 11:00:26 +02:00
rr-
1ed7ad4173 client/posts: add simple thumbnail editing 2016-07-28 23:10:40 +02:00
rr-
3d8eaab57a client/posts: add post content editing 2016-07-27 22:27:33 +02:00
rr-
8de7541bc5 client/posts: fix stripping query for edit page 2016-07-26 23:20:15 +02:00
rr-
7022686b77 client/tags: improve privilege checking
- Hide fields that are uneditable, rather than disabling them
- Support fragmented edit privileges (e.g. roles than can edit only some
  aspects of tags) - up until now the client tried to send everything at
  once, which resulted in errors for such cases.
2016-07-26 20:49:48 +02:00
rr-
8a68e182fd client/posts: implement loop video flag 2016-07-26 20:38:12 +02:00
rr-
865c4f3b79 client/posts: respect edit privileges in sidebar 2016-07-26 20:38:12 +02:00
rr-
7488abb332 client/posts: add simple editing 2016-07-17 20:32:00 +02:00
rr-
651c3f6925 client/posts: fix post edit route 2016-07-17 19:00:40 +02:00
rr-
2a39ec165d client/general: add title to every page 2016-07-13 21:50:07 +02:00
rr-
8901658c17 client/posts: strip junk from post permalinks
Thanks for inspiration, StackExchange
2016-07-08 00:54:24 +02:00
rr-
5ac5eb5503 client/general: refactor URL parameter handling 2016-07-08 00:54:24 +02:00
rr-
fccedc090f client/posts: add mass tag 2016-07-06 23:03:37 +02:00
rr-
1f413763bd client/posts: remember fit mode 2016-06-29 18:54:49 +02:00
rr-
2f20bc1619 client/general: fix certain error handlers 2016-06-23 12:47:56 +02:00
rr-
f3049e5546 client/tags: add summary view, add tag description 2016-06-23 00:17:11 +02:00
rr-
eb09677bf8 client/general: replace direct API with models 2016-06-20 23:52:09 +02:00
rr-
e4b4276f3b client/top-nav: fix activating list items 2016-06-19 21:38:39 +02:00
rr-
39c0c4f338 client/posts: remember search for prev/next post 2016-06-18 11:47:08 +02:00
rr-
a697aba1b0 client/general: remove api calls from controls
Introduce some missing models along the way
2016-06-18 10:35:20 +02:00
rr-
54e3099c56 client/general: refactor control flow
- Controller lifetime is bound to route lifetime
- View lifetime is bound to controller lifetime
- Control lifetime is bound to view lifetime
- Enhanced event dispatching
- Enhanced responsiveness in some places
- Views communicate user input to controllers via new event system
2016-06-18 10:35:20 +02:00
rr-
7f46f72a74 client/auth: fix password reminder 2016-06-17 00:38:43 +02:00
rr-
2ac8d8650c client/posts: introduce post model
Now to replace all the api calls in views with event system... and then
do the same for user, tag and comment
2016-06-14 07:50:22 +02:00
rr-
6fcf81e55d client/posts: split controllers 2016-06-14 07:50:22 +02:00
rr-
0f1e234a5d client/top-nav: trying out actual mvc 2016-06-13 22:43:07 +02:00
rr-
3cbcbf1140 client/general: fix jscs warnings 2016-06-12 22:10:20 +02:00
rr-
0547ec5aa2 client/paging: remember results in history 2016-06-12 22:02:15 +02:00
rr-
76882b59ef client/router: introduce own router
I'm tired of page.js lack of documentation around finer quirks, and
being forced to read its crap code. Refactored into classes, removed
unused cruft.
2016-06-12 21:43:20 +02:00
rr-
a28b4bdd3e client/comments: add comment adding 2016-06-12 18:11:56 +02:00
rr-
b1b261beb8 client/posts: fix safety buttons 2016-06-12 14:10:51 +02:00
rr-
1e48140b00 client/comments: add global comment list 2016-06-12 14:04:52 +02:00
rr-
e9fb93d5c8 server/general: rename _fields to fields 2016-06-11 22:33:33 +02:00
rr-
eec1958280 client/tags: don't fetch all fields 2016-06-11 17:36:02 +02:00
rr-
7566d2e0f3 client/general: respect privileges 2016-06-11 17:36:02 +02:00
rr-
0842d90ca2 client/general: ditch underscore for loops 2016-06-11 17:36:02 +02:00
rr-
07329d33a4 client/posts: add post view (without comments yet) 2016-06-08 22:43:03 +02:00
rr-
c114cec642 client/posts: add safety buttons 2016-06-03 19:47:09 +02:00
rr-
f8e6d07fea client/posts: add proof of concept for post list 2016-06-02 23:39:38 +02:00
rr-
fd2df3966d client/home: show top nav after all, improve looks 2016-06-01 23:42:42 +02:00
rr-
8d1e23aa63 server/general: flatten responses 2016-05-30 22:54:33 +02:00
rr-
aa71ccb02c client/home: show who featured the post 2016-05-29 12:48:51 +02:00
rr-
53fd6fb29b client/home: view featured post, add search form 2016-05-29 12:41:22 +02:00
rr-
8591449508 client/posts: catch post search route 2016-05-29 12:40:36 +02:00
rr-
87e8fb2e7d client/general: unimplemented views empty viewport 2016-05-29 12:40:36 +02:00
rr-
d99c03b9fa client/home: render disk usage and post count 2016-05-22 22:39:31 +02:00
rr-
7aaa28f9de client/tags: add setting default tag category 2016-05-22 22:17:11 +02:00
rr-
ed05ac3c57 client/tags: fix renaming tag not redirecting url 2016-05-22 22:17:11 +02:00
rr-
dd3774ee57 client/users: fix user update success notification 2016-05-21 12:03:49 +02:00
rr-
524cbd0680 client/users: fix presenting user rank 2016-05-21 12:03:49 +02:00
rr-
df5d72d429 client/general: show correct URL in 404 page 2016-05-21 12:03:49 +02:00
rr-
e7fe7d3899 client/general: add 404 page
Reuses old 404 image from 1.x branch, may be subject to change.
2016-05-21 11:49:32 +02:00
rr-
a32c5d1399 client/misc: remove String.format()
...and replace them with ES6 template literals I've just learned about.
2016-05-21 00:08:43 +02:00
rr-
249d6073c0 client/build: remove babel when not transpiling 2016-05-21 00:08:43 +02:00
rr-
69fe8ec31a client/general: refactor all the things
- Move controls to the "controls/" directory
- Make controls interface look similar to each other
- Prefix "private" methods and attributes with underscore
2016-05-21 00:08:43 +02:00
rr-
407848706a views/tags: add tag input control
For now, without tag relations
2016-05-18 00:13:17 +02:00
rr-
414f841944 client/tags: fix unbound EmptyView 2016-05-12 00:12:48 +02:00
rr-
b1deb617bc client/tags: add tag merging, editing and deleting 2016-05-11 23:47:50 +02:00
rr-
2a4241641c client/events: improve event dispatching
This commit introduces timer-less retry system:

1. Any change to URL is going to stop listening to any messages.
2. If a message is sent and there's no handler that could pick it up,
   the message gets enqueued.
3. The message is sent again to the first handler that attaches itself
   to given event type.

While in theory this is full of holes (no control over the first
handler), in practice, it works quite well.

Additionally, views.listenToMessages was attaching to completely wrong
DOM node; this commit fixes this as well.
2016-05-11 23:47:50 +02:00
rr-
8866a46f68 client/general: rename certain views 2016-05-11 12:17:40 +02:00
rr-
27cce56054 client/tags: add tag category editing 2016-05-10 13:26:17 +02:00
rr-
da1386c7d2 client/auth: forget user when they try to log in
This is to let user log in if their login cookie is broken (for example
when it refers to a non existing user). Normally, the client should
treat errors caused by cookie logins as temporary server failures,
inform the user about it and leave the cookie, so that when the server
is up again, all user needs to do is to reload the page rather than
logging again.
2016-05-08 18:04:06 +02:00
rr-
198cb0af3e server/users: hardcode available ranks 2016-05-08 16:59:25 +02:00
rr-
98738dc497 client/users: fix inability to remove email 2016-04-29 13:19:11 +02:00
rr-
266f5c027f client/tags: add tag listing 2016-04-29 12:58:56 +02:00
rr-
a197368bc5 client/paging: fix endless pager issues 2016-04-17 09:24:05 +02:00
rr-
925bfcecc5 client/help: split search help into sections 2016-04-17 00:03:45 +02:00
rr-
e4239a199c server/api: refactor + remove ID from user JSON 2016-04-16 15:49:21 +02:00
rr-
c2aa497d91 client/settings: decouple settings from controller 2016-04-14 21:50:59 +02:00
rr-
f34e83b325 client/users: add filtering 2016-04-14 17:50:46 +02:00
rr-
a83a896dde client/pager: cache state between navigations 2016-04-14 00:41:34 +02:00
rr-
43c657e371 client/paging: don't include empty parameters 2016-04-13 22:15:40 +02:00
rr-
b7a67fc01c views/paging: add endless pager 2016-04-13 00:27:36 +02:00
rr-
21c15f4cb9 client/settings: add accountless settings 2016-04-11 22:48:47 +02:00
rr-
c543b77aed client/nav: add user avatar 2016-04-11 21:43:58 +02:00
rr-
d6daf84da0 client/users: add basic users listing 2016-04-11 19:23:53 +02:00