Index: mailing_list.admin.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/mailing_list/mailing_list.admin.inc,v retrieving revision 1.2 diff -u -p -r1.2 mailing_list.admin.inc --- mailing_list.admin.inc 4 Aug 2009 20:18:22 -0000 1.2 +++ mailing_list.admin.inc 5 Aug 2009 00:20:35 -0000 @@ -166,6 +166,12 @@ function mailing_list_email_form(&$form_ '#value' => isset($form_state['values']['mlid']) ? $form_state['values']['mlid'] : isset($list) ? $list->mlid: null, ); } + if (isset($form_state['values']['ml_name']) || isset($list)) { + $form['ml_name'] = array( + '#type' => 'hidden', + '#value' => isset($form_state['values']['ml_name']) ? $form_state['values']['ml_name'] : isset($list) ? $list->name: null, + ); + } if (isset($form_state['values']['eid']) || isset($email)) { $form['eid'] = array( '#type' => 'hidden', @@ -188,6 +194,7 @@ function mailing_list_email_form(&$form_ '#type' => 'submit', '#submit' => array('mailing_list_email_form_submit'), ); + $form['#validate'][] = 'mailing_list_subscription_form_validate'; $form['#redirect'] = 'admin/build/mailing-list/'. $list->mlid; return $form; } Index: mailing_list.install =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/mailing_list/mailing_list.install,v retrieving revision 1.4 diff -u -p -r1.4 mailing_list.install --- mailing_list.install 4 Aug 2009 19:46:02 -0000 1.4 +++ mailing_list.install 5 Aug 2009 00:20:35 -0000 @@ -80,9 +80,10 @@ function mailing_list_schema() { 'indexes' => array( 'mlid' => array('mlid'), 'name' => array('name'), + 'mail' => array('mail'), ), 'unique keys' => array( - 'mail' => array('mail'), + 'mlid_mail' => array('mlid', 'mail'), ), ); @@ -147,9 +148,12 @@ function mailing_list_update_6000() { 'not null' => TRUE, ), array( - 'unique keys' => array( + 'indexes' => array( 'mail' => array('mail'), ), + 'unique keys' => array( + 'mlid_mail' => array('mlid', 'mail'), + ), ) ); Index: mailing_list.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/mailing_list/mailing_list.module,v retrieving revision 1.4 diff -u -p -r1.4 mailing_list.module --- mailing_list.module 4 Aug 2009 19:46:02 -0000 1.4 +++ mailing_list.module 5 Aug 2009 00:20:35 -0000 @@ -149,7 +149,7 @@ function mailing_list_block($op = 'list' $result = db_query($query); while ($list = db_fetch_object($result)) { $block[$list->mlid] = array( - 'info' => check_plain($list->name), + 'info' => t('Mailing list: @name', array('@name' => $list->name)), ); } break; @@ -158,7 +158,7 @@ function mailing_list_block($op = 'list' $list = mailing_list_load($delta); $block = array( 'subject' => check_plain($list->name), - 'content' => drupal_get_form('mailing_list_subscription_form', $list), + 'content' => drupal_get_form('mailing_list_subscription_form_'. $delta), ); break; } @@ -167,6 +167,23 @@ function mailing_list_block($op = 'list' } /** + * Implementation of hook_forms(). + * + * All subscription forms are build using mailing_list_subscription_form(). + * hook_forms() is required to provide unique form id for each one. + */ +function mailing_list_forms() { + $query = db_query('SELECT * FROM {mailing_list}'); + while ($list = db_fetch_object($query)) { + $forms['mailing_list_subscription_form_'. $list->mlid] = array( + 'callback' => 'mailing_list_subscription_form', + 'callback arguments' => array($list), + ); + } + return $forms; +} + +/** * Return the mailing list object matching a mailing list ID. * * @param $mlid @@ -242,6 +259,7 @@ function mailing_list_subscription_form( '#title' => t('E-mail'), '#type' => 'textfield', '#size' => 20, + '#required' => TRUE, ); $form['submit'] = array( '#value' => t('Subscribe'), @@ -257,9 +275,6 @@ function mailing_list_subscription_form( * entered. */ function mailing_list_subscription_form_validate($form, &$form_state) { - if (variable_get('mailing_list_show_name_'. $form_state['values']['mlid'], 1) && empty($form_state['values']['name'])) { - form_set_error('name', t('Name is required.')); - } $message = user_validate_mail($form_state['values']['mail']); if ($message) { form_set_error('mail', $message);