Webfrontend #387

Updated by Alexander Blum over 5 years ago

* list
* add
* show
* edit
* delete

# Context

We have two object creation processes, which need to enable the user to create objects of others, see [[Specification#Foreign-objects]].
Especially for the creation of Creations the corresponding GUI/Form is quite complex:

* Our database has to be queried
* Future feature: additional dabases should be queried (e.g. musicbrainz)
* Additional information should be provided for disambiguation (e.g. artists with the same name)
* If no match was found, a new object should be specified (artist: name, email; creation: name, artist)
* Unclaimed objects created by a web user should be editable afterwards

We split the specification of relationships to other objects into several forms.

* Group members can only be added after the Artist was created (e.g. an "add" icon on the artist details page)
* Contributors and originals/derivatives can only be added after the Creation was created (e.g. an "add" icon on the creation details page)
* This would break down the complexity
* This would be more error-prone as the user is not stictly guided anymore (could be countered e.g. by notes or big icons on the object details page).
* The form for database queries would still need to be hand crafted, although we have more degrees of freedom (e.g. to change the whole form, if there's no match).
* We omit the database queires in the beginning (like in option 1) to save time (~20h)

Later development: We provide a complete hand crafted form.

* The main object creation form
* A dropdown list for database queries with autotype selection
* More information on mouseover (ajax calls)
* An "add" icon in the dropdown, if no match was found
* A layover with the form for foreign objects on "add"
* Creation of the foreign object after submission (ajax call)
* Refresh of the dropdown list and autoselect the new object (ajax call)