Commit graph

176 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-
f44f2335da client/posts: disable form controls during upload
Closes #99
2016-09-29 12:39:43 +02:00
rr-
600db78a45 client/posts: fix exiting mass tag (pt. 2)
Fixes #94
2016-09-18 10:38:53 +02:00
rr-
91decaf9fe client/tags: fix exiting mass tag
Exiting mass tag didn't remove [+] [-] buttons on post thumbnails.
2016-09-16 21:31:09 +02:00
rr-
19eea226a6 client/search: fix dangling 'no data to show'
Concerned only endless scroll
2016-09-10 11:36:51 +02:00
rr-
988664117a client/posts: don't show notes on flash posts 2016-08-31 22:20:21 +02:00
rr-
5a152dbc0c client/search: go back to page 1 on query change 2016-08-28 23:40:28 +02:00
rr-
e4f9c26776 client/posts: go back to page 1 on safety change 2016-08-28 23:40:28 +02:00
rr-
cf1d15354d client/paging: avoid redrawing header navigation 2016-08-28 23:40:28 +02:00
rr-
63ec28ddb3 client/posts: don't show notes on videos 2016-08-27 22:19:01 +02:00
rr-
02d631a65d client/css: improve appearance on small screens 2016-08-27 22:19:01 +02:00
rr-
0a488afbd8 client/posts: add webm thumbs to upload form 2016-08-24 13:29:29 +02:00
rr-
3da4c54030 client/posts: add controls for reordering uploads 2016-08-24 13:00:17 +02:00
rr-
263d4f3626 client/paging: fix unbinding endless pager 2016-08-24 10:55:31 +02:00
rr-
cc78766585 client/posts: use object URLs in upload form 2016-08-23 23:14:21 +02:00
rr-
9124639564 client/auth: fix user forms reachable via URL 2016-08-23 23:14:05 +02:00
rr-
3c03c001e2 client/auth: fix tag forms reachable via URL 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-
124e871022 client/users: stop native completion
Disabled for user registration and editing where it causes more mess
than good.
2016-08-22 21:46:30 +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-
d5e197e6ea client/general: add empty href for link buttons
In e464e69 I removed href='#' but I noticed that it broke some things.
Readding href serves two purposes:

- it makes links reachable with Tab key
- it makes links clickable with Enter key

The alternative to this approach was to introduce [tabindex] and [role]
attributes. But not only using tabindex=0 with <a/> is questionable,
it'd require adding a keyboard handler that'd intercept space and return
key presses and simulated link clicks. Since it's best to leave this
kind of thing to the native UI, I went with readding hrefs instead. I
believe that hash hrefs, even though being a common practice, are silly,
so I decided to settle down with empty hrefs.

As a bonus, I added a snippet that prevents middle mouse clicks from
opening such links/buttons in new tabs, which was the motivation for
e464e69.
2016-08-22 01:40:30 +02:00
rr-
5bcf44aa2d client/posts: implement upload form 2016-08-21 23:43:36 +02:00
rr-
ecd50f5c88 client/file-dropper: refactor to use events 2016-08-20 22:47:45 +02:00
rr-
9014baab92 client/snapshots: add snapshots browser 2016-08-20 13:01:17 +02:00
rr-
023ec9a976 client/password-reset: fix event binding
Every time the password reset form was loaded, the form submit event
listener was attached to a non-disposable DOM node rather than the DOM
node whose life scope was bound to the viewed page. As such, submitting
the form, leaving the page, returning back to it and sending the request
again caused the 'submit' event to fire twice - one time from the
non-disposed event handler and one from the current handler. This
resulted in the request being sent twice, and getting two confirmation
messages on the screen.

Fortunately, since the password reset requests are GET requests, they're
intercepted by the internal cache of the client API facade, so the
client just saw duplicate messages without the requests being actually
sent to the backend - meaning no extra mails were sent.
2016-08-14 16:57:46 +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-
d5a00fe4b9 client/posts: add note editing 2016-08-05 23:02:41 +02:00
rr-
688740afa9 client/posts: fix mass tag for unprivileged users 2016-08-02 12:27:02 +02:00
rr-
673bb52d4a client/tags: add ability to turn off suggestions 2016-07-31 23:07:01 +02:00
rr-
3f7ccfaea2 client/users: refactor to match other models 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-
7488abb332 client/posts: add simple editing 2016-07-17 20:32:00 +02:00
rr-
394e51ed21 client/general: improve scrolling 2016-07-13 17:18:28 +02:00
rr-
5d8dd9cb05 client/paging: fix endless scroll return path
Since some refactors it has always been returning to page 1.
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-
cd1f4709f0 client/home: change apparance 2016-07-08 00:08:44 +02:00
rr-
fccedc090f client/posts: add mass tag 2016-07-06 23:03:37 +02:00
rr-
99011b02d7 client/home: fix missing info on featured post 2016-07-06 00:07:46 +02:00
rr-
abd8e9e89c client/general: handle spaces in autocomplete 2016-07-03 19:38:17 +02:00
rr-
7b4645b54b client/tags: improve tag regex handling 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-
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-
0f1e234a5d client/top-nav: trying out actual mvc 2016-06-13 22:43:07 +02:00
rr-
e800e6c21b client/comments: fix sort order
Each time the user clicked 'comments' tab, the comments were reversed.
2016-06-12 22:19:05 +02:00
rr-
3cbcbf1140 client/general: fix jscs warnings 2016-06-12 22:10:20 +02:00
rr-
ee829e42d2 client/paging: improve endless scroll 2016-06-12 21:43:20 +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-
1e48140b00 client/comments: add global comment list 2016-06-12 14:04:52 +02:00
rr-
7e8a9a0948 client/comments: add comment list view for post 2016-06-12 12:54:08 +02:00
rr-
0908323290 client/posts: add keyboard shortcuts 2016-06-11 22:34:31 +02:00
rr-
56432e6089 client/posts: add transparency grid
Can be turned off in browsing settings.
2016-06-11 22:34:01 +02:00
rr-
7566d2e0f3 client/general: respect privileges 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-
9d6878a1aa client/posts: bind 'p' key 2016-06-03 19:47:09 +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-
aa2f4559b7 client/settings: add option to upscale small posts 2016-06-01 23:42:42 +02:00
rr-
fd2df3966d client/home: show top nav after all, improve looks 2016-06-01 23:42:42 +02:00
rr-
9b0c2012a7 client/home: show post notes (read-only) 2016-05-29 12:41:22 +02:00
rr-
53fd6fb29b client/home: view featured post, add search form 2016-05-29 12:41:22 +02:00
rr-
1a6ea4f58a client/top-nav: hide top nav for home 2016-05-29 12:41:22 +02:00
rr-
bab88f4739 client/top-nav: reuse makeAccessLink 2016-05-29 12:40:53 +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-
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-
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-
d2b9cece28 views/autocomplete: remove unused nodes 2016-05-20 18:43:27 +02:00
rr-
f2833b6e76 views/tags: automatically add implied tags 2016-05-19 23:32:23 +02:00
rr-
407848706a views/tags: add tag input control
For now, without tag relations
2016-05-18 00:13:17 +02:00
rr-
5736b4adc1 views/tags: add autocomplete control 2016-05-17 11:34:47 +02:00
rr-
d123f27815 clients/general: fix empty view message handling 2016-05-12 00:13:01 +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-
3856e9fd0d client/general: fix JSCS warnings 2016-05-10 14:13:24 +02:00
rr-
27cce56054 client/tags: add tag category editing 2016-05-10 13:26:17 +02:00
rr-
be0a70355d client/paging: replace 'var' with 'let'
Old habits die hard
2016-05-10 12:18:06 +02:00
rr-
6405fbe9f2 client/general: replace handlebars with underscore 2016-05-09 22:36:29 +02:00
rr-
29b0fde9a7 client/paging: improve endless paging
- Change page number indicator
- Remove most of the scrolling cruft as it has no chance of working
  anyway, thanks to our benevolent browsers
- Scroll to page header if the page is not the first one (I'm surprised
  this even works)
- Use promises rather than timers
- Simplify top page detection using .elementFromPoint rather than
  iterating over all pages. Coincidentally, this seems to work slightly
  better
2016-05-09 11:17:26 +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-
0bc45e9c45 server/search: support -min and -max suffixes 2016-04-17 08:31:46 +02:00
rr-
925bfcecc5 client/help: split search help into sections 2016-04-17 00:03:45 +02:00
rr-
b382f3398f client/users: add keyboard shortcuts to user list 2016-04-14 21:50:59 +02:00
rr-
ef3dc1fa75 client/paging: refactor manual pager 2016-04-14 21:50:59 +02:00
rr-
00bf279396 client/views: fix access key underline 2016-04-14 21:50:59 +02:00
rr-
286df9faf3 docs+client/users: document user filtering 2016-04-14 19:58:28 +02:00
rr-
f34e83b325 client/users: add filtering 2016-04-14 17:50:46 +02:00
rr-
905faf3721 client/css: scale to device width 2016-04-14 17:50:04 +02:00
rr-
a83a896dde client/pager: cache state between navigations 2016-04-14 00:41:34 +02:00
rr-
26d46a43bf client/pager: synchronize page number with URL 2016-04-13 21:33:49 +02:00