Jakub Suchy wrote:
Indeed. I tried to get in a patch to Drupal 5 to support our implementation of these kind of features, but it was too late in the cycle, so it was rejected. We either need to duplicate the functionality from the module and theme admin pages, or we need to stick in two submit callbacks to the forms, one that runs early, and one that runs last, so we can see, what was changed in the database about modules (enabled/disabled/installed) and themes (enabled/disabled). That way, we can stick our process into the enable/disable flow.
As far as I see know, adding a pre-submit and a post-submit callback is the better way to go, as it involves less core code duplication (but more database magic).
Or submit a patch to module.inc something like hook_postinstall() using module_invoke_all?
It is not going to solve the problem for Drupal 5, since Drupal 5 is not going to have new features (eg. hooks) anymore. It is released, stable. It will get maintained but that does not mean any new hooks added, just errors corrected. This can be added into Drupal 6 though for which the whole autolocale (feature, not the actual code) is requested to be included anyway.
We need to find a way in Drupal 5 without core patching, and autolocale_form_alter()-ing the module and theme forms, adding an early and a last callback seems to do the trick:
1. Check the database (or the module_list()) in the early callback. 2. Check it again at the callback called last. 3. Compute the difference. 4. Import what needs to be imported
Unfortunately we cannot remove strings for disabled stuff, but we can look into this for Drupal 6.
See the stub is already in autolocale.module since a few weeks:
/** * Implementation of hook_form_alter() * * @todo * Alter system form to catch module enable/disable actions */ function autolocale_form_alter($form_id, &$form) { }
Gabor