Match customized not only by id (should not be problematic, as cf ids
are also used).
Use custom fields without plucking, so no need for getting ids first,
build one sql instead.
* Show project attributes as sections in project overview
* Introduce a column "shown_in" for CustomFieldSection which defines whether the section shall be shown in the sidebar or the main section of the project overview
* Show only those attributes in main section that are configured to be shown there. Same for the sidebar.
* Update project attribute sections after editing them
* Write a test for the new positioning behavior of project attribute sections
* Rename "shown_in" with "display_representation" and make it a hash
* Provide proper default when creating a new section
* Enforce project attribute widgets to be in a new line and wrap properly
* Hide logic for moivng sections to the main area behind the feature flag
* Rename "main section" to "main area"
* Extract custom margins into normal sass
* Rename "side-panel" to "side panel"
* Update test to changed wording
This is making the interface of BaseCallable more consistent.
Previously it was unclear, whether the params passed to perform
should be used to reference parameters or whether the attribute accessor
should be used. Different code used different approaches.
To apply this change more consistently, BaseContracted also removed
params from the methods called inside its own perform method, e.g.
before_perform or after_validate.
At a later point we might consider removing this argument from other large
inheritors as well, for example `BaseServices::SetAttributes#set_attributes`.