'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. $required = variable_get('ec_terms_switch', true); $ec_terms_name = variable_get('ec_terms_title', ''); if ($ec_terms_name == '') { $ec_terms_name = t('Terms & Conditions'); } $form['ec_terms']['switch'] = array( '#type' => 'select', '#title' => t('Require user to agree to terms and conditions?'), '#options' => array(true => t('Yes'), false => 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('Separate screen'), 'review' => t('Checkout review')), '#default_value' => variable_get('ec_terms_page', ''), ); $form['ec_terms']['name'] = array( '#type' => 'textfield', '#title' => t('Title of Terms & Conditions'), '#description' => t('Examples: terms, refund policy, return policy, etc'), '#default_value' => $ec_terms_name, ); $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_details_submit', ); return $form; } function ec_terms_details_validate($form_id, $form_values) { if ($form_values['switch'] == 'Y' && $form_values['text'] == ''){ form_set_error('error', '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'); } if ($form_values['switch'] == 'Y' && $form_values['name'] == '') { form_set_error('error', 'You must provide a title for your terms'); } } function ec_terms_details_submit($form_id, $form_values) { variable_set('ec_terms', $form_values['text']); variable_set('ec_terms_switch', $form_values['switch']); if ($form_values['switch'] == true){ drupal_set_message('ec_terms will be required during checkout'); } if ($form_values['switch'] == false) { 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)'); } if ($form_values['name'] !== '') { variable_set('ec_terms_title', $form_values['name']); drupal_set_message('ec_terms will be titled ' .$form_values['name']); } } /** * 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')); $ec_terms_title = check_plain(variable_get('ec_terms_title', '')); $output = ''; switch ($op) { case 'form': if (variable_get('ec_terms_page', '') == 'page') { //drupal_set_title(variable_get('ec_terms_title', '')); $form = _present_ec_terms($ec_terms, $ec_terms_title); $form['submit'] = array( '#type' => 'submit', '#value' => t('Checkout'), ); return $form; } break; case 'validate': if ((variable_get('ec_terms_switch', true) == true) && (!$txn->ec_terms_agree)) { form_set_error('error', t('Accept our ' .$ec_terms_title .' 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, $ec_terms_title); return $form; } break; case 'review_validate': if (variable_get('ec_terms_page', '') == 'review' && variable_get('ec_terms_switch', true) && !$txn->ec_terms_agree) { form_set_error('error', t('Accept our ' .$ec_terms_title .' in order to continue')); } break; case 'review_save': $txn->screen++; break; } } function theme_ec_terms_review_form(&$form) { $ec_terms_title = variable_get('ec_terms_title', ''); // Build the ec_terms data form. $details = drupal_render_form('ec_terms', $form); // Render it in a box to match other checkout review items. $output = theme('box', $ec_terms_title, $details); return $output; } function _present_ec_terms($ec_terms, $ec_terms_title) { $form['text'] = array( '#type' => 'markup', '#prefix' => '