sillsdev / web-languageforge

Language Forge: Online Collaborative Dictionary Building on the Web and Phone.
https://languageforge.org
MIT License
44 stars 29 forks source link

Language Forge should include the "Publish In" field from FLEx #1239

Open rmunn opened 3 years ago

rmunn commented 3 years ago

Is your feature request related to a problem? Please describe. FLEx includes a "Publish In" field, which lets you subdivide your dictionary entries according to where you want them published (e.g., publish all words to the website, but only the most common words to the printed dictionary). Currently Language Forge doesn't include a "Publish In" at all, so the Send/Receive process ignores that field in FLEx and doesn't touch it.

Describe the solution you'd like Language Forge should add a "Publish In" field to its data model, and include it in the Send/Receive process. The field should be a selection from a list, just like the Parts of Speech (Grammatical Categories) list.

Describe alternatives you've considered Not making any changes, which isn't really a good alternative. This will be very straightforward to implement, and there's no good reason not to do it.

Additional context Without the "Publish In" field, once we add tagging (#1008) features, users are likely to try to use tags to divide their words into "publish" and "don't publish" categories. While tags would work for that (as well as for many other uses we haven't considered yet), there's already an existing mechanism in place for that specific classification, so it's better that we guide the user towards that mechanism. That way it will work seamlessly with any publishing-assistance features that FLEx includes, if any. (I'm not familiar with that part of the FLEx code base.)

alex-larkin commented 3 years ago

This is wonderful!

One limitation of this field in FLEx is that new entries are automatically tagged as "publish"- not ideal. As long as LF doesn't do this, it should prove to be more helpful!

Side notes:

Thanks!

rmunn commented 3 years ago

Turns out the way FLEx implements this is to have a "Do not publish in" list that you can edit, and then the "Publish In" field is a read-only field that's basically "Everything publication type, except for the ones you listed in the 'Do not publish in' field". Which is... complicated.

Because Language Forge needs to support FLEx versions from 8.2 onwards, even if FLEx does change the behavior of the "Publish In" field in the future, we will still have to deal with the way it works right now in FLEx, and support the "Do not publish in" behavior for as long as we still support Send/Receive with FLEx 8.2. (Which should be as long as it has any significant installed user base; we should not be forcing users to upgrade for our own convenience as developers).

So I need to think about the UI for the "Publish In" field in LF. I think I will make it a list where you can add or delete items from the list, similar to the Semantic Domains list, and where you can click a delete button on each list item to remove it from the list. That way we don't confuse the users with the inverted logic of "If I want to publish it in my main dictionary, I need to make sure the main dictionary is not in the 'Do not publish in' field."

rmunn commented 3 years ago

After further work, I'm discovering that the Send/Receive part of this is going to be tricky. I'm reconsidering whether to prioritize this over the entry-tagging feature. I thought this would be a quick one, but I'm now estimating a couple of weeks to get this done right.

rmunn commented 1 year ago

Had a further idea for the UI in Language Forge: it should show as "Publish in" with a radio button with two choices. Default is "All", and the other choice is a dropdown list of specific locations to publish in. (Side note: is "locations" the term used in FLEx? Research needed.)