summaryrefslogtreecommitdiff
path: root/lib/VNDB/Handler
AgeCommit message (Collapse)AuthorFilesLines
2015-10-03formValidate: Add json_(maxitems|unique|sort) options to json templateYorhel2-38/+13
Adds slightly more strict validation and simplifies further processing.
2015-10-03js: Minor fixesYorhel1-1/+1
2015-10-03Handle JSON data natively when processing form dataYorhel2-32/+21
No more need for extra json_encode/json_decode calls, and the form_compare() function is more lenient w.r.t. integer/string comparison. This is the improvement I described in commit ed86cfd12b0bed7352e2be525b8e63cb4d6d5448
2015-10-03Rewrote screenshot uploader to support multiple files + use jsonYorhel1-27/+23
This might have broken the screenshot uploader on some crappy browsers, but it's much cleaner than the old iframe hack. The ability to upload multiple files in one go is also very convenient.
2015-10-01VNEdit: Give error on duplicate alias + improved msg on id/page errorYorhel1-8/+8
2015-09-20formValidate(): Let's just allow a '0' id - fix more errorsYorhel2-5/+5
Looks like 0 is actually used often to indicate some special value. Affects basically all 'check all' boxes (had to modify some of those boxes because some used -1, but that wasn't a problem).
2015-09-20Handler::Staff: Fix validation error on primary alias IDYorhel1-1/+1
It can be 0 when creating a new alias as primary name.
2015-09-20Fix handling of empty seiyuu/credits fieldsYorhel1-2/+2
2015-09-20formValidate: Add json template and remove json_validate() functionYorhel2-24/+22
This is less convenient than I had expected, because all the form handling code is designed to work with plain strings rather than any scalar. This means the json data has to be encoded again to get into $frm (not doing this means that, if the form didn't validate, the field won't be filled out correctly). And then decoded for validation, and then encoded again for comparison. I suspect the better solution is to fix the form handling code to handle arbitrary data structures: comparison can be done by deep comparison rather than a simple string compare, and the form generator can auto-encode-to-json if it sees a complex object. Another advantage of this solution is that the comparison function can be less strict with respect to number formatting. In the current scheme you have to be very careful that numbers are not automatically coerced into string format, otherwise the comparison will fail. Either way, that's an idea for the future...
2015-09-20formValidate: Created templates for gtin and editsum fieldsYorhel5-12/+6
2015-09-20Update usage kv_validate() to upcoming TUWF 1.0Yorhel13-81/+73
And added new 'page' and 'id' templates for more strict validation.
2015-09-17Handler::Discussions: Add search box to non-item thread listsYorhel1-22/+31
As requested at https://vndb.org/t6862.28
2015-09-17Handler::VNEdit: Use json_validate() for the VN staff/cast dataYorhel1-36/+38
This (only very slightly) simplified further processing of the data. It does add more validation than was present: Previously it was possible to send invalid roles (would give a 500) or invalid numeric IDs (would throw some perl warnings). These issues are now handled earlier on. This change also puts a maximum length on the notes field, but nobody has passed the 300 characters so far.
2015-09-17Rename jsonEncode/Decode to C-style namingYorhel2-8/+8
CamelCase is used for methods, C-style names for functions. I'm just nitpicking now.
2015-09-17Created json_validate() for JSON form data, used for Staff alias editorYorhel1-17/+11
The intention is to move more JS editing forms to use JSON, but manually verifying JSON objects is both painful and likely to introduce errors or vulnerabilities. json_validate() is a bit of a hack, but has the advantage that its validation syntax is the same as for normal forms, and it automatically strips whitespace. I intent to give kv_validate() an upgrade to be more flexible/modular so it can do more custom normalization. But that's for later. I've been meaning to rewrite the JS forms anyway together with the large JS rewrite, but I'm rather lazy. This is one small step in the right direction anyway. Note that json_validate() assumes that the JS code will provide user-friendly messages on bad input, but the staff alias editor doesn't quite do this yet.
2015-09-07Handler::Discussions: Fix two bugs introduced in last commitYorhel1-1/+1
2015-09-07Handler::Discussions: Use ts_headline() to format search resultsYorhel1-3/+13
And also fix strip_bb_tags() to be case-insensitive and fix a bug in converting the query into a tsquery.
2015-09-07Handler::Discussions: Remove formcode from search formYorhel1-1/+1
It's not verified and only uglifies the URLs.
2015-09-07Implement discussion board search functionYorhel1-7/+112
Inspired by wakaranai's implementation at https://github.com/morkt/vndb/commit/b852c87ad145fdaaa09c79b6378dd819b46f7e87 This version is different in a number of aspects: - Separate search functions for title search and fulltext post search. Perhaps not the most convenient option, but the downside of a combined search is that if the query matches the threads' title, then all of the posts in that thread will show up in the results. This didn't seem very useful. - Sorting is based purely on post date. Rank-based sort is slow without a separate caching column, and in my opinion not all that useful. Implementation differences: - Integrated in the existing DB::Discussions functions, so less code to maintain and more code reuse. - No separate caching column for the tsvector, a functional index is used instead. This is a bit slower (index results need to be re-checked against the actual messages, hence the slowdown), but has the advantage of smaller database dumps and less complexity in updating the cache. Things to fix or look at: - Highlighting of the search query in message contents. - Allow or-style query matching
2015-08-31Handler::VNPage: Increase limit on number of visible releasesYorhel1-2/+2
From 50 to 200. https://vndb.org/t6892
2015-08-17js: Clean up misc.jsYorhel2-6/+8
- Individual blocks don't leak variables into the parent scope anymore. Previously some blocks would re-use variables from other blocks, creating (almost invisible) dependencies between te blocks. - More consistent code for ulist-change-dropdowns, and all of them have a ref= argument now. - Use 'hidden' class instead of style.display wherever that makes sense. - Remove dead 'advselect' code. Hasn't been used since the addition of search filters. - lang_select doesn't rely on the position of the language class in className anymore (seriously that stuff is fragile...)
2015-08-17js: Add L10N strings to all relevant varsYorhel1-6/+1
This simplifies the JS code in some places and removes a whole number of L10N strings from the "l10n_str" var, thus shrinking the JS size a bit (uncompressed about 1500 bytes, in fact. 500 bytes after gzip).
2015-08-10Split script.js into multiple smaller filesYorhel1-0/+2
First part of a Javascript cleanup.
2015-08-08Char page: Dynamically show/hide trait groups depending on visible traitsYorhel1-7/+1
2015-08-08Hide sexual traits by default + Add profile option to change defaultYorhel2-5/+7
2015-08-08Add sexual trait toggle to character informationYorhel2-28/+23
It's not a preference yet and the sexual traits are still visible by default. I'll fix that later.
2015-07-27Handler::VNPage: Bunch of fixes for release page comparison rewriteYorhel1-5/+4
- Remove the obsolete 'use's - Re-add max-width style when requested - Fix comparison in displaying media - Fix sorting on animation column
2015-07-26Handler::VNPage: Rewrite release comparison pageYorhel1-408/+227
The previous code was using experimental perl features (switch / smartmatch) that weren't really needed, and the information about individual columns was spread around in multiple functions. This rewrite makes the code consistent with the rest of VNDB, and has *all* of the column-specific information in one data structure. I did not replicate the similar-cell-merging feature, partly because the code for it is definitely not trivial and partly because it doesn't make the table look any less cluttered. In fact, I feel that it only makes the table harder to interpret because it looks messy. This is a matter opinion, of course, so I might reimplement the feature if people who actually use this comparison page want to. Overall, I'm still undecided on whether this comparison page should exist at all in its current form - it's not very user-friendly and often looks cluttered. I'm keeping it because it does have some use-cases where it avoids opening every release page to do a manual comparison, but I'd love a more friendly-looking alternative.
2015-07-25Handler::Misc: Fix minor calculation error in determining "admin" userYorhel1-1/+1
2015-07-21Add profile option for the default spoiler settingYorhel6-31/+30
This fixes the unexpected behaviour that changing the spoiler setting on one page will change it for all pages. All manual spoiler changing options are temporary now.
2015-07-21L10N: Combine spoiler setting stringsYorhel4-19/+18
2015-07-21Add profile option for default visible tag categories on VN pagesYorhel2-3/+9
The name of the profile setting isn't very clear. Not sure what to do with it.
2015-07-21Add profile option to show or summarize tags on VN pages by defaultYorhel2-4/+6
2015-07-20L10N: Support plural forms for charrolesYorhel2-4/+4
Used /v+/chars, other occurrences just use singular.
2015-07-19Remove reliance on Referer header for the login formYorhel1-3/+3
2015-07-19Remove reliance on Referer header for /[vr]+/list modificationsYorhel1-6/+6
2015-07-19Remove reliance on Referer header for language switchingYorhel1-9/+9
First step in removing the use of the Referer header for redirects. The Referer header is ugly and not always reliable, it's better to encode the required information in the URL.
2015-07-18Handler::(VNEdit|Chars): Fix removal of alpha layer in imagesYorhel2-2/+4
Apparently, imagemagick's Flatten() has some odd corner cases where it seems to do more than just remove the alpha layer. The current approach is the one recommended by the official docs: http://www.imagemagick.org/Usage/masking/#remove
2015-07-12Handler::VNEdit: Use better resizing algorithmYorhel1-1/+6
Same as 2f61c4f6772f852f9e0b9ede6228de4e4dbf71a0
2015-07-01Handler::Chars: Use better image resizing algorithmYorhel1-1/+5
As suggested at https://vndb.org/t6668.18 I also like how the 'amount' option isn't documented for UnsharpMask(). All documentation says 'gain' instead, but that option throws an error.
2015-06-15d7: Replace "top 5 contributors" with "special users" listingYorhel1-5/+9
Having a proper and up-to-date list of moderators is an often requested feature.
2015-05-13Changed layour of staff pagesYorhel1-127/+105
Not entirely sure if this is an improvement, but it's slightly more consistent with other layouts (combination of user page, release page and character page), and leaves more room for the credit/cast listings.
2015-05-12Handler::Tags: Don't allow adding deleted tags to a VNYorhel1-0/+3
2015-05-12Fix display of 'external' iconYorhel2-2/+2
Broken in commit 887607bb3744c727ec617508c17b2b7df46c2287
2015-02-27Handler::Chars: Flatten uploaded images to better handle transparencymorkt1-2/+2
2015-02-27staff: Manually stripe credit list on staff pagesmorkt1-3/+4
2015-02-21chars: Display seiyuu on char instancesmorkt1-3/+3
2015-02-16Various staff improvementsmorkt1-1/+4
(Quoting mail:) - character list is sorted by name in cast edit form (managing of the huge lists like v6458 becomes slightly easier); - display number of characters voiced on seiyuu page; - display a notice in staff edit form when primary name could be changed.
2015-02-14Merge branch 'master' of g.blicky.net:vndbYorhel1-3/+5
Ugh I hate merge commits, but for some reason 'git rebase' doesn't allow empty email addreses, and refuses to rebase my commits. :-(
2015-02-14Revamp staff alias editing interface + fix reverting removed aliassesmorkt1-29/+23
The new alias editing interface makes it a lot easier to change the primary name.