? decisions-HEAD-400172-1.patch ? decisions-HEAD-92138-4.patch ? decisions_electoral_list.inc Index: decisions.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/decisions/decisions.module,v retrieving revision 1.206 diff -u -p -r1.206 decisions.module --- decisions.module 5 Dec 2008 05:02:41 -0000 1.206 +++ decisions.module 12 Mar 2009 23:26:44 -0000 @@ -33,6 +33,7 @@ function decisions_init() { module_load_include('inc', 'decisions', 'decisions'); module_load_include('inc', 'decisions', 'decisions_node'); module_load_include('inc', 'decisions', 'decisions_datetime'); + module_load_include('inc', 'decisions', 'decisions_electoral_list'); drupal_add_css(drupal_get_path('module', 'poll') .'/poll.css'); } @@ -322,47 +323,27 @@ function theme_decisions_status($message } -/****************************/ -/* Electoral list functions */ -/****************************/ - -/** - * Creates the form for the electoral list. - */ -function decisions_electoral_list_form($form_state, $nid) { - $form = array(); - $form['electoral_list'] = array( - '#type' => 'fieldset', - '#tree' => TRUE, - '#title' => t('Administer electoral list'), - '#collapsible' => TRUE, - '#weight' => 2, - '#collapsed' => TRUE, - ); - - $form['electoral_list']['add_user'] = array( - '#type' => 'textfield', - '#title' => t('Add user'), - '#size' => 40, - '#autocomplete_path' => 'user/autocomplete', - '#description' => t('Add an individual user to the electoral list'), - ); - - $form['electoral_list']['submit'] = array( - '#type' => 'submit', - '#value' => t('Modify electoral list'), - ); - - $form['electoral_list']['reset'] = array( - '#type' => 'button', - '#value' => t('Reset electoral list'), - ); - - $form['nid'] = array('#type' => 'hidden', '#value' => $nid); - return $form; - +/** + * Invoke a hook_electoral_list() operation in all modules. + * + * @param $form + * The form to be modified. + * @param $node + * A node object. + * @return + * The returned value of the invoked hooks. + */ +function decisions_invoke_electoral_list(&$form, $node) { + $return = ''; + foreach (module_implements('electoral_list') as $name) { + $function = $name .'_electoral_list'; + $result = $function($form, $node); + $return .= $result; + } + return $return; } + /** * Outputs the electoral list tab. */ @@ -382,29 +363,13 @@ function decisions_electoral_list_tab() '#collapsible' => TRUE, '#weight' => 2, '#collapsed' => TRUE, - ); - - $form['electoral_list']['add_user'] = array( - '#type' => 'textfield', - '#title' => t('Add user'), - '#size' => 40, - '#autocomplete_path' => 'user/autocomplete', - '#description' => t('Add an individual user to the electoral list'), - ); - - $form['electoral_list']['submit'] = array( - '#type' => 'submit', - '#value' => t('Modify electoral list'), - ); - - $form['electoral_list']['reset'] = array( - '#type' => 'button', - '#value' => t('Reset electoral list'), - ); - - $form['nid'] = array('#type' => 'hidden', '#value' => $node->nid); - $output .= drupal_get_form('decisions_electoral_list_form', $node->nid); + ); + + //print_r(decisions_invoke_electoral_list($form, $node)); + $output .= decisions_invoke_electoral_list($form, $node); + } + $output .= t('This table lists all the eligible voters for this Decision.'); $header[] = array('data' => t('Voter'), 'field' => 'u.name'); @@ -445,47 +410,7 @@ function decisions_electoral_list_remove drupal_goto('node/'. $node->nid .'/electoral_list'); } - -/** - * Validate changes to the electoral list - */ -function decisions_electoral_list_form_validate($form, &$form_state) { - if ($form_state['values']['op'] == t('Reset electoral list')) { - if (user_access('administer decisions')) { - db_query('DELETE FROM {decisions_electoral_list} WHERE nid=%d', $form_state['values']['nid']); - drupal_set_message(t('Electoral list cleared.')); - $node = menu_get_object(); - if (_decisions_electoral_list_reset($node)) { - drupal_set_message(t('Electoral list reset.')); - } - return; - } - } - $add_user = $form_state['values']['electoral_list']['add_user']; - if ($add_user) { - // Check that the user exists - if (db_fetch_object(db_query('SELECT uid FROM {users} WHERE name="%s"', $add_user))) { - form_set_error('electoral_list][add_user', t('User %user does not exist.', array('%user' => $add_user))); - return FALSE; - } - } -} - -/** - * Submit changes to the electoral list - */ -function decisions_electoral_list_form_submit($form, &$form_state) { - $add_user = $form_state['values']['electoral_list']['add_user']; - $nid = $form_state['values']['nid']; - if ($add_user) { - db_query('REPLACE INTO {decisions_electoral_list} (nid, uid) SELECT "%d", u.uid FROM users u WHERE u.name = "%s"', $nid, $add_user); - drupal_set_message(t('%user added to electoral list.', array('%user' => $add_user))); - drupal_goto('node/'. $nid .'/electoral_list'); - } - else { - drupal_not_found(); - } -} + /***********************************/