I am posting this here to get community feedback, see if anyone thinks Strongarm itself should carry this feature, and find out whether anyone else is interested in putting it together.
Problem/Motivation
When a site has some variables exported to code, it becomes unclear to later site administrators which administrative options can be safely changed as part of ongoing operation of the site.
In it's early incarnation, Strongarm would disable the form elements of variables it managed. This proved to be overly-aggressive, confusing administrators and hindering UI-based site development.
Proposed resolution
When a form has been processed by system_settings_form(), gather all variables defined by strongarm and add descriptive text to the forms explaining their management in code and what that implies. This is a much softer variant of the historical behavior that should not hinder workflows, and provides an in-line explanation of something which every site administrator needs to learn via trial-and-error and careful documentation.
Enhancement #1
For each variable present in the form, append bold description text such as "This option is currently managed in code. Changes will require follow-up site development for long-term maintainability." The form element should further be marked in some way to facilitate Enhancement #2.
Enhancement #2
When the settings form is saved, each strongarm-managed setting should be checked. If there is a change, a warning message should be displayed on the screen such as: "A change in the setting !label has been detected. This setting is managed in code, please update the module." This text will need some refining for multiple values across potentially multiple modules.
Remaining tasks
Everything.
User interface changes
This change would touch a large number of administrative forms in subtle ways. To avoid impacting existing sites while providing improved administrative experience to knew ones, it should be put behind a feature toggle.
- Enable by default:
variable_get('strongarm_admin_guidance', TRUE) - Disable for existing sites:
variable_set('strongarm_admin_guidance', FALSE)
(This will not be necessary if we decide this functionality is a separate module, but that seems like a way of modulecount++)
API changes
There are no expected changes.
Comments
Comment #1
alexgreyhead commentedFollowing this - hopefully it will get some traction as it's frustrating to roll a beautiful site out to a client, who then makes a perfectly legitimate configuration change, only for that change to be reverted at the next deployment.