Create a separate function that defined farmOS modules during profile installation.

This commit is contained in:
Michael Stenta 2019-01-16 13:57:04 -05:00
parent 50e12487f9
commit e3ad9650e2
1 changed files with 50 additions and 33 deletions

View File

@ -5,6 +5,49 @@
* farmOS install file.
*/
/**
* Define farmOS modules that will be available to enable during installation.
*
* @return array
* Returns an array with two sub-arrays:
* 'default': an array of modules that will be checked by default.
* 'optional': an array of modules that will be unchecked by default.
*/
function farm_modules() {
return array(
'default' => array(
'farm_log_harvest' => st('Harvest logs'),
'farm_log_input' => st('Input logs'),
'farm_crop' => st('Crops'),
'farm_livestock' => st('Livestock'),
'farm_equipment' => st('Equipment'),
'farm_calendar' => st('Calendar of logs'),
'farm_import' => st('CSV importers for assets and logs'),
'farm_quick' => st('Quick forms UI'),
'farm_soil_nrcs' => st('NRCS Soil Survey'),
'farm_soil_test' => st('Soil test logs'),
'farm_area_generate' => st('Area generator (for generating parallel beds within an area)'),
'farm_area_import' => st('Import areas in bulk from a single KML file'),
'farm_area_types' => t('Default area types: Property, Field, Building, etc'),
'farm_crop_area_types' => t('Crop area types: Bed and Greenhouse'),
'farm_livestock_area_types' => t('Livestock area types: Paddock'),
'farm_water' => st('Water area type'),
'farm_access_roles' => st('Default roles: Manager, Worker, Viewer'),
'farm_help' => st('farmOS Help Pages'),
'farm_tour' => st('farmOS Tours'),
'farm_api' => st('farmOS API'),
),
'optional' => array(
'farm_water_test' => st('Water test logs'),
'farm_soil_compost' => st('Compost'),
'farm_sensor' => st('Sensor'),
'farm_sensor_listener' => st('Sensor: Listener'),
'farm_ledger' => st('Sale and purchase logs (beta)'),
'farm_quantity_report' => st('Quantity report generator (beta)'),
),
);
}
/**
* Implements hook_install().
*/
@ -55,45 +98,19 @@ function farm_install_configure_form($form, &$form_state) {
// Set the page title.
drupal_set_title(st('Configure farmOS'));
// Load the list of available modules.
$modules = farm_modules();
// Allow user to choose which high-level farm modules to install.
$module_options = array_merge($modules['default'], $modules['optional']);
// Default modules will be selected by default.
$default_modules = array(
'farm_log_harvest' => st('Harvest logs'),
'farm_log_input' => st('Input logs'),
'farm_crop' => st('Crops'),
'farm_livestock' => st('Livestock'),
'farm_equipment' => st('Equipment'),
'farm_calendar' => st('Calendar of logs'),
'farm_import' => st('CSV importers for assets and logs'),
'farm_quick' => st('Quick forms UI'),
'farm_soil_nrcs' => st('NRCS Soil Survey'),
'farm_soil_test' => st('Soil test logs'),
'farm_area_generate' => st('Area generator (for generating parallel beds within an area)'),
'farm_area_import' => st('Import areas in bulk from a single KML file'),
'farm_area_types' => t('Default area types: Property, Field, Building, etc'),
'farm_crop_area_types' => t('Crop area types: Bed and Greenhouse'),
'farm_livestock_area_types' => t('Livestock area types: Paddock'),
'farm_water' => st('Water area type'),
'farm_access_roles' => st('Default roles: Manager, Worker, Viewer'),
'farm_help' => st('farmOS Help Pages'),
'farm_tour' => st('farmOS Tours'),
'farm_api' => st('farmOS API'),
);
// Extra modules will not be selected by default.
$extra_modules = array(
'farm_water_test' => st('Water test logs'),
'farm_soil_compost' => st('Compost'),
'farm_sensor' => st('Sensor'),
'farm_sensor_listener' => st('Sensor: Listener'),
'farm_ledger' => st('Sale and purchase logs (beta)'),
'farm_quantity_report' => st('Quantity report generator (beta)'),
);
$module_defaults = array_keys($modules['default']);
$form['farm_modules'] = array(
'#type' => 'checkboxes',
'#title' => st('farmOS Modules'),
'#description' => st('Select the farmOS modules that you would like installed by default.'),
'#options' => array_merge($default_modules, $extra_modules),
'#default_value' => array_keys($default_modules),
'#options' => $module_options,
'#default_value' => $module_defaults,
);
// Allow the user to select their default system of measurement.