Index: autoassignrole.admin.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/autoassignrole/autoassignrole.admin.inc,v retrieving revision 1.2 diff -u -p -r1.2 autoassignrole.admin.inc --- autoassignrole.admin.inc 18 Oct 2010 13:24:12 -0000 1.2 +++ autoassignrole.admin.inc 18 Oct 2010 15:56:35 -0000 @@ -60,7 +60,7 @@ function autoassignrole_auto_settings() // user by Drupal. $roles = user_roles(TRUE); unset($roles[DRUPAL_AUTHENTICATED_RID]); - + if ($roles) { $form['autoassignrole_auto_roles'] = array( '#type' => 'checkboxes', @@ -76,3 +76,21 @@ function autoassignrole_auto_settings() return system_settings_form($form); } + +/** + * Form builder; The settings form for user selectable role assignment. + * + * @ingroup forms + * @see system_settings_form() + */ +function autoassignrole_user_settings() { + $form['autoassignrole_user_active'] = array( + '#type' => 'radios', + '#title' => t('User role assignment'), + '#default_value' => variable_get('autoassignrole_user_active', 0), + '#description' => t('Toggles allowing end users to select roles when creating their accounts.'), + '#options' => array(1 => t('Enabled'), 0 => t('Disabled')), + ); + + return system_settings_form($form); +} Index: autoassignrole.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/autoassignrole/autoassignrole.module,v retrieving revision 1.19 diff -u -p -r1.19 autoassignrole.module --- autoassignrole.module 10 Oct 2010 21:03:35 -0000 1.19 +++ autoassignrole.module 18 Oct 2010 15:56:35 -0000 @@ -44,6 +44,14 @@ function autoassignrole_menu() { 'page arguments' => array('autoassignrole_auto_settings'), 'file' => 'autoassignrole.admin.inc', ); + $items['admin/config/autoassignrole/user'] = array( + 'title' => 'Allow user to choose', + 'description' => 'Configure the ability for an end user to choose their own roles.', + 'access arguments' => array('administer autoassignrole'), + 'page callback' => 'drupal_get_form', + 'page arguments' => array('autoassignrole_user_settings'), + 'file' => 'autoassignrole.admin.inc', + ); return $items; } Index: autoassignrole.test =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/autoassignrole/autoassignrole.test,v retrieving revision 1.3 diff -u -p -r1.3 autoassignrole.test --- autoassignrole.test 18 Oct 2010 13:24:12 -0000 1.3 +++ autoassignrole.test 18 Oct 2010 15:56:35 -0000 @@ -160,4 +160,50 @@ class AutoassignroleAdminSettingsTestCas $this->assertEqual(TRUE, array_key_exists($rid, $roles), 'Verifying that role (rid:' . $rid . ') was activated.'); } } + + /** + * Test admin setting functionality for autoassignrole_user_active. + * @see http://drupal.org/node/944880 + */ + function testAdminUserSettings() { + // Create a new user who can access the administration settings + $this->drupalLogin($this->admin_user); + + // Check that the user can see the admin settings page. + $this->drupalGet('admin/config/autoassignrole/user'); + $this->assertField( + 'autoassignrole_user_active', + 'The autoassignrole_user_active field is accessible.' + ); + + // Enable autoassignrole_user_active + $edit['autoassignrole_user_active'] = 1; + $this->drupalPost( + 'admin/config/autoassignrole/user', + $edit, + t('Save configuration') + ); + + // Verify autoassignrole_user_active has been enabled + $this->assertEqual( + variable_get('autoassignrole_user_active', 0), + 1, + 'autoassignrole_user_active has been enabled' + ); + + // Disable autoassignrole_user_active + $edit['autoassignrole_user_active'] = 0; + $this->drupalPost( + 'admin/config/autoassignrole/user', + $edit, + t('Save configuration') + ); + + // Verify autoassignrole_user_active has been disabled + $this->assertEqual( + variable_get('autoassignrole_user_active', 1), + 0, + 'autoassignrole_user_active has been disabled' + ); + } }