'admin/ecsettings/ec_terms', 'title' => t('Terms & Conditions'), 'description' => t('Specify the Terms & Conditions that will be presented to a user during the checkout process.'), 'callback' => 'ec_terms', 'access' => user_access('administer ec_terms'), 'type' => MENU_NORMAL_ITEM, ); } else { } return $items; } /** * Implementation of hook_perm(). */ function ec_terms_perm() { return array('administer ec_terms'); } // Present ec_terms settings form at admin/ecsettings/ec_terms. function ec_terms() { $output .= drupal_get_form('ec_terms_details', $form); return $output; } // Actual settings form. function ec_terms_details() { // Check and see if we're requiring ec_terms, to set default value for form. $set = variable_get('ec_terms', ''); if (isset($set)) { $required = 'Y'; } else { $required = 'N'; } $form['ec_terms']['switch'] = array( '#type' => 'select', '#title' => t('Present terms & conditions to user?'), '#options' => array('Y' => t('Yes'), 'N' => t('No')), '#default_value' => $required, ); $form['ec_terms']['how'] = array( '#type' => 'select', '#title' => t('When to present terms'), '#description' => t('Terms present at review will only display, not require user interaction'), '#options' => array('page' => t('Seperate screen'), 'review' => t('Checkout review')), '#default_value' => variable_get('ec_terms_page', ''), ); $form['ec_terms']['text'] = array( '#type' => 'textarea', '#title' => t('Terms & Conditions'), '#description' => t('These will be displayed during the checkout process. HTML Accepted'), '#cols' => 60, '#rows' => 15, '#default_value' => variable_get('ec_terms', ''), ); $form['ec_terms']['save'] = array( '#type' => 'submit', '#value' => t('Save'), '#submit' => 'ec_terms_detail_submit', ); return $form; } function ec_terms_details_validate($form_id, $form_values) { if ($form_values['switch'] == 'Y' && $form_values['text'] == ''){ form_set_error('error', 'If you\'re going to require ec_terms you should probably enter something here...'); } if ($form_values['how'] == '') { form_set_error('error', 'You must specify when EC terms should be presented to the user'); } } function ec_terms_details_submit($form_id, $form_values) { if ($form_values['switch'] == 'Y'){ variable_set('ec_terms', $form_values['text']); drupal_set_message('ec_terms will be required during checkout'); } if ($form_values['switch'] == 'N') { variable_del('ec_terms'); drupal_set_message('ec_terms will not be required during checkout'); } if ($form_values['how'] == 'page') { variable_set('ec_terms_page', $form_values['how']); drupal_set_message('ec_terms will be a seperate screen during checkout.'); } if ($form_values['how'] == 'review') { variable_set('ec_terms_page', $form_values['how']); drupal_set_message('ec_terms will be shown on the review screen (requiring no active confirmation)'); } } /** * Implementation of hook_checkoutapi(). */ function ec_terms_checkoutapi(&$txn, $op, $arg3 = NULL, $arg4 = NULL){ $ec_terms_string = variable_get('ec_terms', ''); $ec_terms = filter_xss($ec_terms_string, $allowed_tags = array('a', 'em', 'strong', 'ul', 'ol', 'li', 'dl', 'dt', 'dd', 'div')); $output = ''; switch ($op) { case 'form': if (variable_get('ec_terms_page', '') == 'page') { $form = _present_ec_terms($ec_terms); return $form; } break; case 'validate': if (isset($txn->ec_terms) && $txn->ec_terms == 0) { form_set_error('error', t('Accept these terms in order to continue')); } break; case 'save': if ($txn->ec_terms !== 0) { $txn->screen++; } break; case 'review': if(variable_get('ec_terms_page', '') == 'review'){ $form = _present_ec_terms($ec_terms); return $form; } break; case 'review_validate': break; case 'review_save': $txn->screen++; break; } } function theme_ec_terms_review_form(&$form) { $ec_terms = variable_get('ec_terms', ''); $output = theme('box', t('Terms & Conditions'), $ec_terms); return $output; } function _present_ec_terms($ec_terms) { $form['text'] = array( '#type' => 'markup', '#prefix' => '
', '#value' => $ec_terms, '#suffix' => '
', ); $form['ec_terms'] = array( '#type' => 'checkbox', '#title' => t('I agree to these terms'), ); $form['submit'] = array( '#type' => 'submit', '#value' => t('Checkout'), ); return $form; }