Commit graph

568 commits

Author SHA1 Message Date
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-
44b2d9b830 client/expanders: change appearance 2016-08-22 01:40:30 +02:00
rr-
c7f36c893f client/expanders: extract HTML 2016-08-22 01:40:30 +02:00
rr-
2335aaff20 client/tags: fix outline for focused compact tags
It was being hidden due to overflow: hidden. In other news, I hate CSS.
2016-08-22 01:40:11 +02:00
rr-
0a326972c3 client/tag-input: add 'add' button 2016-08-22 00:54:11 +02:00
rr-
81f14e154e client/tag-input: extract CSS 2016-08-22 00:54:11 +02:00
rr-
d0c0652720 client/tag-input: extract HTML template 2016-08-22 00:54:11 +02:00
rr-
5bcf44aa2d client/posts: implement upload form 2016-08-21 23:43:36 +02:00
rr-
f0ed82b0de client/models: fix post list missing comment count 2016-08-21 20:11:38 +02:00
rr-
dbd36256ce client/file-dropper: support Vimperator focus 2016-08-20 22:47:45 +02:00
rr-
03b5e933bf client/file-dropper: add URL support 2016-08-20 22:47:45 +02:00
rr-
ecd50f5c88 client/file-dropper: refactor to use events 2016-08-20 22:47:45 +02:00
rr-
8feac2950b client/file-dropper: fix selecting multiple files 2016-08-20 22:47:45 +02:00
rr-
1f54a127d0 client/posts: fix deleting posts 2016-08-20 13:08:02 +02:00
rr-
9014baab92 client/snapshots: add snapshots browser 2016-08-20 13:01:17 +02:00
rr-
03a7bd0d5c client/api: fix working with UTF8 entity IDs 2016-08-16 21:42:11 +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-
6b77404ecf client/tags: fix handling malformed tag export 2016-08-13 13:38:37 +02:00
rr-
cef3ad8e48 client/models: fix changing avatar 2016-08-13 11:57:27 +02:00
rr-
aac0ce6ee4 client/css: improve error messages under comments 2016-08-08 18:00:02 +02:00
rr-
5200f834f7 client/models: fix modifying lists in post model
The lists in the post model (current state and original state) referred
to the same objects, so that making changes to current state was seen as
if no change has been made. This broke mass tag - it always thought
there were no changes to post tags.
2016-08-08 17:59:49 +02:00
rr-
059bac877b client/models: fix notifying about list changes 2016-08-08 17:45:57 +02:00
rr-
46435182f6 client/posts: fix mass tag not sending version 2016-08-08 17:45:49 +02:00
rr-
79b3973f9e client/general: use resource versioning 2016-08-07 09:55:51 +02:00
rr-
d23300645f client/tags: fix tag category template 2016-08-05 23:12:42 +02:00
rr-
70a65cc0a3 client/notes: fix saving post breaking selection
The problem was with dangling references - the saved post has been
replacing the note collection with entirely new class instances, whereas
the notes control clung onto old references. Now the control detects
such reloads and acts accordingly.
2016-08-05 23:04:29 +02:00
rr-
8e9ddf796f client/notes: add exit prompt for polygon changes 2016-08-05 23:04:29 +02:00
rr-
3235d70b1b client/notes: make content appear at centroids
Previously it used the centroid of polygon's bounding box, not the
polygon's centroid.
2016-08-05 23:04:21 +02:00
rr-
b7149ba7d6 client/notes: make keyboard scaling use centroids
Previously it used first polygon point.
2016-08-05 23:04:11 +02:00
rr-
9013f15c1a client/notes: add scaling notes with shift key 2016-08-05 23:03:43 +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-
9383fd2b27 client/settings: rearrange the form, add hints 2016-08-05 23:02:41 +02:00
rr-
d5a00fe4b9 client/posts: add note editing 2016-08-05 23:02:41 +02:00
rr-
721900ee2f client/css: fix wrapping long tags 2016-08-04 00:30:24 +02:00
rr-
7f53abb498 client/tags: remove unused cruft 2016-08-04 00:30:24 +02:00
rr-
67f803a2f2 client/general: fix support for deleted users 2016-08-02 12:27:02 +02:00
rr-
688740afa9 client/posts: fix mass tag for unprivileged users 2016-08-02 12:27:02 +02:00
rr-
11d3853122 client/css: tweaks margins 2016-08-02 12:27:01 +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-
3b800b9731 client/css: fix button height
Regression from 797e5d4
2016-08-02 12:27:01 +02:00
rr-
51ea06d837 client/posts: add expanders to edit sidebar 2016-08-02 12:27:01 +02:00
rr-
b9f2db1c63 client/tags: add toggle suggestions opacity 2016-08-01 21:50:00 +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-
9ee973ce1c client/posts: add custom thumbnail discarding 2016-07-31 23:54:29 +02:00
rr-
673bb52d4a client/tags: add ability to turn off suggestions 2016-07-31 23:07:01 +02:00
rr-
97b217dc31 client/tags: add [delete] key support in tag input 2016-07-31 22:35:09 +02:00
rr-
e291369701 client/build: fix minifying adding ghost spaces
HTML minifier added ghost spaces around some of <%- %> even despite <!--
--> trick.
2016-07-30 23:12:32 +02:00
rr-
6e3462187d client/tags: disable relations for pasted tags 2016-07-30 23:12:31 +02:00
rr-
1fbeecb0a2 client/help: correct obsolete information 2016-07-30 23:12:31 +02:00
rr-
e464e69b36 client/general: remove faux href='#' from links 2016-07-30 23:12:31 +02:00
rr-
29bc41f5da client/tags: don't mark duplicated implications 2016-07-30 23:12:31 +02:00
rr-
245ce258a9 client/tags: improve copying tag list
- Don't copy tag count
- Don't copy × button
- Copy spaces between tags
2016-07-30 23:12:08 +02:00
rr-
72072db078 client/tags: show tag suggestions in tag input 2016-07-30 23:10:58 +02:00
rr-
c1c47de3a5 client/posts: links in edit mode preserve mode 2016-07-30 23:10:58 +02:00
rr-
4b75aab816 client/posts: implement exit confirmation 2016-07-30 23:10:58 +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-
dbf44ed58f client/tags: mark used tags in autocomplete 2016-07-30 23:10:58 +02:00
rr-
81afd383fa client/tags: fade out tag colors after 2.5s 2016-07-30 23:10:58 +02:00
rr-
af455b901f client/tags: make implications yellow 2016-07-30 23:10:58 +02:00
rr-
e4954140f8 client/tags: rewrite tag input
Suggestions will be reimplemented in separate commit
2016-07-30 23:10:38 +02:00
rr-
7e6e59417e client/tags: allow deleting used tags 2016-07-30 13:43:15 +02:00
rr-
f63851e2cf client/build: fix JSCS warnings 2016-07-30 13:43:15 +02:00
rr-
d91352a3b0 client/general: ditch tabular forms 2016-07-30 13:41:44 +02:00
rr-
797e5d4244 client/css: fix combobox height on Firefox
https://bugzilla.mozilla.org/show_bug.cgi?id=454625
2016-07-30 13:41:44 +02:00
rr-
611cb3b9f9 client/home: fix post not being bound to its model
This resulted in errors while presenting post content control - it tried
to use methods that were available only in the actual model.
2016-07-30 13:41:44 +02:00
rr-
76e9307449 client/tags: fix window title 2016-07-29 11:00:26 +02:00
rr-
ef4806e142 client/posts: display edit link for tagless posts 2016-07-28 23:10:41 +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-
6635b507f2 client/posts: fix losing query after exiting edit 2016-07-26 23:20:16 +02:00
rr-
8de7541bc5 client/posts: fix stripping query for edit page 2016-07-26 23:20:15 +02:00
rr-
3f7ccfaea2 client/users: refactor to match other models 2016-07-26 23:20:15 +02:00
rr-
d2a5e1056d client/models: discard field declarations
This has important side effect that matters when we check for data
changes using _orig dictionary. Previously, _orig was empty (so its
members fields were undefiend) whereas the real fields were declared as
nulls. This meant that for new entities, the conditions were always
true, which is unintended. Now both _orig and the class itself are
initially populated with _updateFromResponse which syncs the state
between them, removing the problem.
2016-07-26 23:15:05 +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-
b378ce7ede client/posts: move relations above tags 2016-07-26 20:38:12 +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-
0db70f7951 client/css: stylize cursor of disabled elements 2016-07-26 19:57:41 +02:00
rr-
faf461419f client/posts: fix JSCS complaint 2016-07-17 21:15:50 +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-
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-
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-
cd1f4709f0 client/home: change apparance 2016-07-08 00:08:44 +02:00
rr-
6140872cd9 client/posts: add implications recursively 2016-07-06 23:03:37 +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-
7e62751e4e client/tags: fix hovering over autocomplete in FF
Hovering over an autocomplete box always selected the last element
rather than the element under the cursor. This is because resultIndex
was bound by reference.

This looks like a bug in FF implementation of "for (let [x, y] of ...)"
-rather than binding "x" and "y" to the scope of the loop, it's
equivalent to "for (var [x, y] of ...)", which causes nasty anomalies
for functions created inside the loop body.
2016-07-05 23:59:10 +02:00
rr-
abd8e9e89c client/general: handle spaces in autocomplete 2016-07-03 19:38:17 +02:00
rr-
7ae2778e48 client/css: fix sizing of large posts 2016-07-03 18:30:33 +02:00
rr-
83cc53be07 client/posts: show post relations 2016-07-03 18:30:32 +02:00
rr-
1f413763bd client/posts: remember fit mode 2016-06-29 18:54:49 +02:00
rr-
c8e57146f3 client/tags: add usage count 2016-06-28 22:04:55 +02:00
rr-
7b4645b54b client/tags: improve tag regex handling 2016-06-23 12:47:56 +02:00
rr-
2f20bc1619 client/general: fix certain error handlers 2016-06-23 12:47:56 +02:00
rr-
c7f6663c36 client/general: escape entity names in links 2016-06-23 12:47:56 +02:00
rr-
6ea129a9ef client/views: escape HTML
This lets client use < > in tag names.
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-
a6d6aa2f4d client/api: encode spaces (and others) in URLs 2016-06-23 00:15:25 +02:00
rr-
1a75c61f65 client/tags: fix tag categories with spaces 2016-06-23 00:15:25 +02:00
rr-
1c5f44a91c client/tags: fix sorting by tag usage 2016-06-23 00:15:25 +02:00
rr-
c0fd46c890 client/views: fix complex templates 2016-06-23 00:15:24 +02:00
rr-
eb09677bf8 client/general: replace direct API with models 2016-06-20 23:52:09 +02:00
rr-
5f4b67a2bc client/views: improve HTML to DOM converter
Putting a <tr> in the template resulted in... something weird. Adapting
tricks from JQuery with additional fixes.
2016-06-20 21:44:04 +02:00
rr-
e4b4276f3b client/top-nav: fix activating list items 2016-06-19 21:38:39 +02:00
rr-
d5c3d21951 client/api: fix cache not cleared on login
This led to weird anomalies when logging with valid password and then
with invalid one.
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-
8c424ae4ab client/tags: fix link to used tags 2016-06-17 21:25:37 +02:00
rr-
7f46f72a74 client/auth: fix password reminder 2016-06-17 00:38:43 +02:00
rr-
974bc7e908 client/css: fix tag delete form ghost margin 2016-06-16 23:42:50 +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-
e93af8b577 client/events: add experimental EventTarget 2016-06-13 20:11:17 +02:00
rr-
892c154b34 client/polyfill: add NodeList.querySelectorAll 2016-06-13 20:10:55 +02:00
rr-
7116903438 client/css: remove ghost margin near comment form
It appeared only on Chrome?
2016-06-13 20:10:11 +02:00
rr-
f1686f8449 client/css: reduce margin around comment form 2016-06-13 20:10:00 +02:00
rr-
6b68c77e17 server/posts: add relation-count token 2016-06-13 20:09:15 +02:00
rr-
c508d37d54 client/css: improve tag edit view 2016-06-12 22:46:22 +02:00
rr-
f24ea3450d client/comments: fix canceling preview 2016-06-12 22:33:31 +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-
0547ec5aa2 client/paging: remember results in history 2016-06-12 22:02:15 +02:00
rr-
95b3b09cbc client/router: remember scroll position 2016-06-12 21:58:05 +02:00
rr-
e10ed4bce8 client/router: refactor call chains 2016-06-12 21:57:19 +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-
4295e1c827 client/misc: fix Markdown permalinks 2016-06-12 18:15:27 +02:00
rr-
a28b4bdd3e client/comments: add comment adding 2016-06-12 18:11:56 +02:00
rr-
b9fc626ace client/comments: fix link placement for Vimperator 2016-06-12 17:10:03 +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-
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-
07603be35e client/posts: add Vimperator hints to vote buttons 2016-06-11 22:34:01 +02:00
rr-
e9fb93d5c8 server/general: rename _fields to fields 2016-06-11 22:33:33 +02:00
rr-
9e13c05517 client/misc: fix invalid markup for SJIS 2016-06-11 22:33:33 +02:00
rr-
c2606a2555 client/posts: fix handling sidebar errors 2016-06-11 17:45:32 +02:00
rr-
1a8ff11522 client/css: fix border around active post 2016-06-11 17:45:29 +02:00
rr-
fcf9cb13cb client/css: fix body width in post view 2016-06-11 17:45:29 +02:00
rr-
eec1958280 client/tags: don't fetch all fields 2016-06-11 17:36:02 +02:00
rr-
8303c08437 client/users: make avatars clickable 2016-06-11 17:36:02 +02:00
rr-
7670737873 client/general: reduce visual distractions 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-
abd679888a client/general: make fatal errors fatal 2016-06-11 17:36:02 +02:00
rr-
2e6e9b40b6 client/general: make search box seen by Vimperator 2016-06-08 22:54:07 +02:00
rr-
d445a4c93f client/general: simplify input creation 2016-06-08 22:51:15 +02:00
rr-
07329d33a4 client/posts: add post view (without comments yet) 2016-06-08 22:43:03 +02:00
rr-
e944e89c54 client/tags: add edit time column 2016-06-08 22:39:49 +02:00
rr-
009e13c6d8 client/polyfill: add .querySelector to NodeList 2016-06-08 22:39:49 +02:00
rr-
3a42b21987 client/css: refactor <nav> css 2016-06-05 21:46:57 +02:00
rr-
a20bf56e75 client/posts: tweak posts list view 2016-06-04 12:32:42 +02:00
rr-
19d8480891 client/users: add counters to user summary 2016-06-03 21:46:25 +02:00
rr-
aa95afb989 client/tags: fix crash without exported tags 2016-06-03 21:37:30 +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-
dcaf650244 client/posts: change hover border 2016-06-02 23:56:56 +02:00
rr-
f8e6d07fea client/posts: add proof of concept for post list 2016-06-02 23:39:38 +02:00
rr-
802c7feca0 server/search: add safety search for posts 2016-06-02 13:58:08 +02:00
rr-
aa2f4559b7 client/settings: add option to upscale small posts 2016-06-01 23:42:42 +02:00
rr-
d6f27e82c6 client/notes: fix placement after mouse scroll 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-
8d1e23aa63 server/general: flatten responses 2016-05-30 22:54:33 +02:00
rr-
5427b0d25a client/home: make footer less prominent 2016-05-29 12:49:24 +02:00
rr-
aa71ccb02c client/home: show who featured the post 2016-05-29 12:48:51 +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-
6d6cce20dd client/misc: add formatMarkdown() 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-
79f22d27cd client/views: reuse mutation observer 2016-05-29 12:40:36 +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-
4b3640bf2e client/css: remove margin above certain headings 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-
7ea4718b1b client/tags: add suggesting related tags 2016-05-22 22:17:11 +02:00
rr-
fa4412ef90 client/api: let caller disable nprogress 2016-05-22 22:17:11 +02:00
rr-
519f606a39 client/build: Google Droid Sans → local Open Sans 2016-05-21 14:02:08 +02:00
rr-
f721554724 client/build: don't use CDN for FontAwesome 2016-05-21 12:35:41 +02:00
rr-
d8c20b89c6 client/build: organize assets into directories 2016-05-21 12:33:02 +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-
6beffc2ec1 client/home: link to szurubooru code 2016-05-21 11:38:24 +02:00
rr-
2fade2f08c client/css: improve appearance on small screens 2016-05-21 11:17:11 +02:00
rr-
432d57096e client/build: pick up changes faster 2016-05-21 10:34:29 +02:00
rr-
94a228b1e7 client/build: roll back to underscore
lodash adds extra 50K for no benefit.
2016-05-21 10:04:23 +02:00
rr-
98c6128829 client/build: true template precompiling
Rather than putting templates in DOM nodes, output JS functions
themselves.

This fixes transpiling for IE11, where ES6 parts of the templates
wouldn't get passed through Babel.
2016-05-21 10:04:23 +02:00
rr-
052a7ca684 client/general: use 'ctx' variable for templates 2016-05-21 09:46:53 +02:00
rr-
bae238794a client/general: reduce lodash usages 2016-05-21 08:27:10 +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-
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-
50404d5f5e client/general: change templates extension
...from .Handlebars' (which the project no longer uses) .hbs, to a more
generic .tpl. Additionally, replace hyphens with underscores for
consistency.
2016-05-18 00:15:28 +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-
dbaf71b8eb client/forms: disable button outline on Chrome 2016-05-17 11:34:46 +02:00
rr-
83086fddd0 client/general: skip vendor JS on watch 2016-05-14 14:47:48 +02:00
rr-
e6be94d139 client/build: always compress vendor JS 2016-05-14 14:47:36 +02:00
rr-
914bee4c64 client/build: compile vendor packages separately 2016-05-14 13:50:39 +02:00
rr-
2cba1a432f client/general: replace underscore with lodash 2016-05-14 13:12:01 +02:00
rr-
d123f27815 clients/general: fix empty view message handling 2016-05-12 00:13:01 +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-
09bc5f10f9 client/tags: fix hiding table for no results 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-
27533483b2 client/tags: make headers clickable 2016-05-10 14:06:52 +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-
7b342b58b5 client/users: fix links to post search queries 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-
c34b1e3ccf client/css: fix clipped input text 2016-05-09 22:36:29 +02:00
rr-
58134ae2c6 client/css: remove nprogress spinner 2016-05-09 18:14:22 +02:00
rr-
25de62411f client/tags: improve table appearance 2016-05-09 11:21:09 +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-
7610761ec8 client/general: add nprogress to API calls 2016-05-08 18:59:11 +02:00
rr-
f083e5fdc8 client/general: scroll to top on page change 2016-05-08 18:56:08 +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-
0d2fc830a6 client/build: add missing dependency 2016-05-08 18:04:06 +02:00
rr-
198cb0af3e server/users: hardcode available ranks 2016-05-08 16:59:25 +02:00
rr-
58964bcdc9 server/posts: add post listing 2016-05-07 21:50:37 +02:00
rr-
29b57b0af0 client/nav: fix accesskey alignment 2016-04-29 13:24:01 +02:00
rr-
98738dc497 client/users: fix inability to remove email 2016-04-29 13:19:11 +02:00
rr-
d67a1b2f1c client/css: stylize focused elements 2016-04-29 12:58:56 +02:00
rr-
266f5c027f client/tags: add tag listing 2016-04-29 12:58:56 +02:00
rr-
0f90196ad5 client/users: fix listing users 2016-04-29 10:17:55 +02:00
rr-
a30886cc70 server/search: rename order: to sort: 2016-04-22 19:37:58 +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-
71e8e32faf client/users: change search syntax help link 2016-04-17 00:03:56 +02:00
rr-
925bfcecc5 client/help: split search help into sections 2016-04-17 00:03:45 +02:00
rr-
61d2fb88ea server/tags: add tag listing 2016-04-16 21:24:09 +02:00
rr-
e4239a199c server/api: refactor + remove ID from user JSON 2016-04-16 15:49:21 +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-
0ddbc64320 client/css: tweak help button appearance 2016-04-14 21:50:59 +02:00
rr-
c2aa497d91 client/settings: decouple settings from controller 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-
35c549493c server/users: support wildcards in user search 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-
90559ffcdb client/build: fix IE11 transpiling 2016-04-14 17:50:38 +02:00
rr-
7cf4e6c37d client/paging: compact page no. for endless pager 2016-04-14 17:50:38 +02:00
rr-
334ff8edcd client/css: align controls in horizontal forms 2016-04-14 17:50:38 +02:00
rr-
c92c7b722f client/css: don't use monospace fonts 2016-04-14 17:50:29 +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-
43c657e371 client/paging: don't include empty parameters 2016-04-13 22:15:40 +02:00
rr-
26d46a43bf client/pager: synchronize page number with URL 2016-04-13 21:33:49 +02:00
rr-
28e85bd21a client/css: switch to stylus 2016-04-13 20:13:10 +02:00
rr-
d18a8090b1 client/build: transpile ES6 for older browsers 2016-04-13 20:13:10 +02:00
rr-
5796b07908 client/build: don't keep templates in DOM 2016-04-13 18:58:34 +02:00
rr-
b7a67fc01c views/paging: add endless pager 2016-04-13 00:27:36 +02:00
rr-
7874614be3 client/messages: fix batch messages appearance 2016-04-12 18:25:52 +02:00
rr-
d3979d63dc client/paging: notify about empty results 2016-04-12 18:25:08 +02:00
rr-
68c966ff7d client/users: fix patterns in account settings 2016-04-12 13:48:31 +02:00
rr-
21c15f4cb9 client/settings: add accountless settings 2016-04-11 22:48:47 +02:00
rr-
f5272bb5f3 client/api: fix login error handling 2016-04-11 21:43:58 +02:00
rr-
543d0fca57 client/api: cache API requests
Specifically, cache all GET requests until first POST/PUT/DELETE
request.
2016-04-11 21:43:58 +02:00
rr-
256a4e49b9 client/css: animate nav link hover color 2016-04-11 21:43:58 +02:00
rr-
c543b77aed client/nav: add user avatar 2016-04-11 21:43:58 +02:00
rr-
1086bca3c2 client/views: fix rendering non-void elements 2016-04-11 19:23:53 +02:00
rr-
d6daf84da0 client/users: add basic users listing 2016-04-11 19:23:53 +02:00
rr-
bb3f280c7f client/build: fix templates with more than 1 _ 2016-04-10 22:14:25 +02:00
rr-
4dcee37567 client/users: support avatar changing 2016-04-10 18:54:19 +02:00
rr-
4faf42ee19 client+server/general: fix config references
...some references still referred to non-existing config.ini.
2016-04-10 16:23:35 +02:00
rr-
e268d679d3 client/views: move form controls to HB helpers 2016-04-10 16:23:33 +02:00
rr-
7c1876dd5c client/views: fix radio buttons 2016-04-10 00:25:16 +02:00
rr-
58e0d2e295 client/views: replace fieldsets with divs
Although it has nice semantic name, fieldset gives troubles to flexbox,
so I'm dropping it.
2016-04-10 00:24:54 +02:00
rr-
8f5890ab67 client/general: refactor promises 2016-04-09 23:41:56 +02:00
rr-
5053598a13 client/views: extract empty view
...so that UsersController doesn't mess with DOM.
2016-04-09 22:39:13 +02:00
rr-
8e525b48a6 client/general: correct A:R for thumbnails 2016-04-09 22:38:57 +02:00
rr-
e12492bd4d client/api: fix removing cookies on login failures 2016-04-09 22:23:24 +02:00
rr-
2e1823b708 client/views: replace inheritance with composition 2016-04-09 22:23:24 +02:00
rr-
4821f2ac6c client/users: add user deletion 2016-04-09 18:41:49 +02:00
rr-
b6df2ed903 server/search: prefer hyphens to underscores 2016-04-09 08:58:06 +02:00
rr-
b78d018870 client/login: don't show pw reset w/o working smtp 2016-04-08 20:09:32 +02:00
rr-
2d8b657559 client/users: tweak settings form 2016-04-08 15:46:31 +02:00
rr-
5bd7f1fa6c client/views: move notifications to controllers 2016-04-08 13:48:23 +02:00
rr-
0ceaa8da42 client/views: refactor rendering 2016-04-08 13:48:23 +02:00
rr-
7871c69aa3 client/users: implement account settings
(Without avatars yet.)
2016-04-08 10:18:39 +02:00
rr-
90d4401024 client/api: move cookies management to API 2016-04-08 10:03:29 +02:00
rr-
51a889e3a8 client/api: protect against null error messages 2016-04-08 09:48:47 +02:00
rr-
e0516af111 client/build: enable source maps for debug builds 2016-04-08 09:48:47 +02:00