• 4 October 2010Working on Customize Keywords

    I'm working on this feature as planned but it's taking longer than I hoped because I have to update the database structure. Until now the database was using Heisig's "frame numbers" for referencing flashcards, stories and such. This was a shortsight on my part, but when I first wrote the website it was logical and easy to implement.

    Frame numbers are no longer sufficient to allow customizing keywords that are not in the original RTK range (any of the thousands of kanji in the unicode set, as well as the last jouyou additions in the RTK supplement).

    Read more for gory details :)

    I am switching all queries to use the unicode code point instead. Right now I implemented the UCS-2 value on most tables as this seems to be sufficient for kanji. For the hanzi website, "extraplanar" unicode characters may need to be supported. It will be easy to increase the unicode value, what takes time is changing the code from using frame numbers to unicode numbers. In some places the frame numbers are still required, for example the Check Progress page; so it isn't a straightforward search and replace (I wish :)).

    On the plus side, I would have had to do this for the RevTH website anyway, so this will be a good chunk of work out of the way for RevTH.

    Back to the Customize Keywords feature. I thought of using a "edit in place" UI similar to Woelpad's plugin, and made popular on sites such as Flickr. Then I tried a simple popup and realized it would be very handy: I will put another Manage page where one can review and edit many keywords at once. Clicking the keywords in this table will show the edit keyword popup. Since the Edit Keyword popup is a stand alone "component", it is much easier to implement that way (instead of, for example, using a data table where rows are editable).

    Another thing that I'm very happy about is that I salvaged a lot of YUI2-based classes and widgets that I developed on past projects. This opens the way for more interactive widgets and dialogs on the site.