diff --git a/includes/webform.admin.inc b/includes/webform.admin.inc index 89603ce..3592d0f 100644 --- a/includes/webform.admin.inc +++ b/includes/webform.admin.inc @@ -258,6 +258,7 @@ function theme_webform_admin_content($variables) { $rows = array(); foreach ($nodes as $node) { + $node = webform_get_original_node($node); $rows[] = array( l($node->title, 'node/' . $node->nid), l(t('Submissions'), 'node/' . $node->nid . '/webform-results'), diff --git a/includes/webform.components.inc b/includes/webform.components.inc index 555bc10..91c9eca 100644 --- a/includes/webform.components.inc +++ b/includes/webform.components.inc @@ -15,6 +15,7 @@ * Overview page of all components for this webform. */ function webform_components_page($node, $page_number = 1) { + $node = webform_get_original_node($node); $output = drupal_get_form('webform_components_form', $node); return array( @@ -32,6 +33,7 @@ function webform_components_page($node, $page_number = 1) { */ function theme_webform_components_page($variables) { $node = $variables['node']; + $node = webform_get_original_node($node); $form = $variables['form']; return drupal_render($form); @@ -41,6 +43,7 @@ function theme_webform_components_page($variables) { * The table-based listing of all components for this webform. */ function webform_components_form($form, $form_state, $node) { + $node = webform_get_original_node($node); $form = array( '#tree' => TRUE, '#node' => $node, @@ -302,6 +305,7 @@ function webform_components_form_validate($form, &$form_state) { function webform_components_form_submit($form, &$form_state) { $node = node_load($form_state['values']['nid']); + $node = webform_get_original_node($node); // Update all mandatory and weight values. foreach ($node->webform['components'] as $cid => $component) { @@ -584,6 +588,7 @@ function webform_component_edit_form($form, $form_state, $node, $component, $clo */ function webform_component_edit_form_validate($form, &$form_state) { $node = node_load($form_state['values']['nid']); + $node = webform_get_original_node($node); if (!preg_match('/^[a-z0-9_]+$/i', $form_state['values']['form_key'])) { form_set_error('form_key', t('The field key %field_key is invalid. Please include only lowercase alphanumeric characters and underscores.', array('%field_key' => $form_state['values']['form_key']))); @@ -599,6 +604,7 @@ function webform_component_edit_form_validate($form, &$form_state) { function webform_component_edit_form_submit($form, &$form_state) { // Ensure a webform record exists. $node = node_load($form_state['values']['nid']); + $node = webform_get_original_node($node); webform_ensure_record($node); // Remove empty extra values. @@ -646,6 +652,7 @@ function webform_component_edit_form_submit($form, &$form_state) { } function webform_component_delete_form($form, $form_state, $node, $component) { + $node = webform_get_original_node($node); $cid = $component['cid']; $form = array(); @@ -673,6 +680,7 @@ function webform_component_delete_form($form, $form_state, $node, $component) { function webform_component_delete_form_submit($form, &$form_state) { // Delete the component. $node = $form_state['values']['node']; + $node = webform_get_original_node($node); $component = $form_state['values']['component']; webform_component_delete($node, $component); drupal_set_message(t('Component %name deleted.', array('%name' => $component['name']))); @@ -709,6 +717,7 @@ function webform_component_insert(&$component) { $component['value'] = isset($component['value']) ? $component['value'] : NULL; $component['mandatory'] = isset($component['mandatory']) ? $component['mandatory'] : 0; + $component['nid'] = webform_get_original_node_nid($component['nid']); if (!isset($component['cid'])) { if (lock_acquire('webform_component_insert_' . $component['nid'], 5)) { @@ -763,6 +772,7 @@ function webform_component_update($component) { $component['value'] = isset($component['value']) ? $component['value'] : NULL; $component['mandatory'] = isset($component['mandatory']) ? $component['mandatory'] : 0; + $component['nid'] = webform_get_original_node_nid($component['nid']); db_update('webform_component') ->fields(array( 'pid' => $component['pid'], @@ -786,6 +796,7 @@ function webform_component_delete($node, $component) { // Check if a delete function is available for this component. If so, // load all submissions and allow the component to delete each one. + $node = webform_get_original_node($node); webform_component_include($component['type']); $delete_function = '_webform_delete_' . $component['type']; if (function_exists($delete_function)) { @@ -884,6 +895,7 @@ function webform_component_feature($type, $feature) { * returned list of options. */ function webform_component_list($node, $component_filter = NULL, $indent = TRUE, $optgroups = FALSE) { + $node = webform_get_original_node($node); $options = array(); $page_names = array(); diff --git a/includes/webform.emails.inc b/includes/webform.emails.inc index 61582b5..ad40967 100644 --- a/includes/webform.emails.inc +++ b/includes/webform.emails.inc @@ -12,6 +12,7 @@ */ function webform_emails_form($form, $form_state, $node) { module_load_include('inc', 'webform', 'includes/webform.components'); + $node = webform_get_original_node($node); $form['#attached']['library'][] = array('webform', 'admin'); @@ -93,6 +94,7 @@ function webform_emails_form($form, $form_state, $node) { function theme_webform_emails_form($variables) { $form = $variables['form']; $node = $form['#node']; + $node = webform_get_original_node($node); $header = array(t('E-mail to'), t('Subject'), t('From'), array('data' => t('Operations'), 'colspan' => 2)); $rows = array(); @@ -150,13 +152,14 @@ function theme_webform_email_add_form($variables) { * Submit handler for webform_emails_form(). */ function webform_emails_form_submit($form, &$form_state) { + $node = webform_get_original_node($form['#node']); if ($form_state['values']['email_option'] == 'custom') { $email = $form_state['values']['email_custom']; } else { $email = $form_state['values']['email_component']; } - $form_state['redirect'] = array('node/' . $form['#node']->nid . '/webform/emails/new', array('query' => array('option' => $form_state['values']['email_option'], 'email' => trim($email)))); + $form_state['redirect'] = array('node/' . $node->nid . '/webform/emails/new', array('query' => array('option' => $form_state['values']['email_option'], 'email' => trim($email)))); } /** @@ -164,6 +167,7 @@ function webform_emails_form_submit($form, &$form_state) { */ function webform_email_edit_form($form, $form_state, $node, $email = array()) { module_load_include('inc', 'webform', 'includes/webform.components'); + $node = webform_get_original_node($node); $form['#attached']['library'][] = array('webform', 'admin'); $form['#attached']['js'][] = array('data' => array('webform' => array('revertConfirm' => t('Are you sure you want to revert any changes to your template back to the default?'))), 'type' => 'setting'); @@ -398,6 +402,7 @@ function webform_email_edit_form_validate($form, &$form_state) { function webform_email_edit_form_submit($form, &$form_state) { // Ensure a webform record exists. $node = $form_state['values']['node']; + $node = webform_get_original_node($node); webform_ensure_record($node); // Merge the e-mail, name, address, and subject options into single values. @@ -449,7 +454,7 @@ function webform_email_edit_form_submit($form, &$form_state) { webform_email_update($email); } - $form_state['redirect'] = array('node/' . $form_state['values']['node']->nid . '/webform/emails'); + $form_state['redirect'] = array('node/' . $node->nid . '/webform/emails'); } /** @@ -457,6 +462,7 @@ function webform_email_edit_form_submit($form, &$form_state) { */ function webform_email_delete_form($form, $form_state, $node, $email) { $eid = $email['eid']; + $node = webform_get_original_node($node); $form['node'] = array( '#type' => 'value', @@ -484,6 +490,7 @@ function webform_email_delete_form($form, $form_state, $node, $email) { function webform_email_delete_form_submit($form, &$form_state) { // Delete the e-mail settings. $node = $form_state['values']['node']; + $node = webform_get_original_node($node); $email = $form_state['values']['email']; webform_email_delete($node, $email); drupal_set_message(t('E-mail settings deleted.')); @@ -492,7 +499,7 @@ function webform_email_delete_form_submit($form, &$form_state) { unset($node->webform['emails'][$email['eid']]); webform_check_record($node); - $form_state['redirect'] = 'node/' . $form_state['values']['node']->nid . '/webform/emails'; + $form_state['redirect'] = 'node/' . $node->nid . '/webform/emails'; } /** @@ -500,6 +507,7 @@ function webform_email_delete_form_submit($form, &$form_state) { */ function webform_email_load($eid, $nid) { $node = node_load($nid); + $node = webform_get_original_node($node); if ($eid == 'new') { $email = array( 'email' => '', @@ -561,6 +569,7 @@ function webform_email_update($email) { * Delete an e-mail setting. */ function webform_email_delete($node, $email) { + $node = webform_get_original_node($node); db_delete('webform_emails') ->condition('nid', $node->nid) ->condition('eid', $email['eid']) diff --git a/includes/webform.pages.inc b/includes/webform.pages.inc index f75250b..15ade66 100644 --- a/includes/webform.pages.inc +++ b/includes/webform.pages.inc @@ -241,6 +241,7 @@ function webform_configure_form_validate($form, &$form_state) { */ function webform_configure_form_submit($form, &$form_state) { $node = node_load($form_state['values']['nid']); + $node = webform_get_original_node($node); // Save the confirmation. $node->webform['confirmation'] = $form_state['values']['confirmation']['value']; diff --git a/includes/webform.report.inc b/includes/webform.report.inc index 84e44ac..ed6ddc6 100644 --- a/includes/webform.report.inc +++ b/includes/webform.report.inc @@ -15,6 +15,7 @@ module_load_include('inc', 'webform', 'includes/webform.submissions'); */ function webform_results_submissions($node, $user_filter, $pager_count) { global $user; + $node = webform_get_original_node($node); if (isset($_GET['results']) && is_numeric($_GET['results'])) { $pager_count = $_GET['results']; @@ -140,6 +141,7 @@ function theme_webform_results_per_page($variables) { */ function theme_webform_results_submissions_header($variables) { $node = $variables['node']; + $node = webform_get_original_node($node); $columns = array( array('data' => t('#'), 'field' => 'sid', 'sort' => 'desc'), @@ -215,6 +217,7 @@ function theme_webform_results_table($variables) { drupal_add_library('webform', 'admin'); $node = $variables['node']; + $node = webform_get_original_node($node); $components = $variables['components']; $submissions = $variables['submissions']; $total_count = $variables['total_count']; @@ -272,6 +275,7 @@ function theme_webform_results_table($variables) { */ function webform_results_clear($nid) { $node = node_load($nid); + $node = webform_get_original_node($node); $submissions = webform_get_submissions($nid); foreach ($submissions as $submission) { webform_submission_delete($node, $submission); @@ -286,6 +290,7 @@ function webform_results_clear($nid) { */ function webform_results_clear_form($form, $form_state, $node) { drupal_set_title(t('Clear Form Submissions')); + $node = webform_get_original_node($node); $form = array(); $form['nid'] = array('#type' => 'value', '#value' => $node->nid); @@ -297,6 +302,7 @@ function webform_results_clear_form($form, $form_state, $node) { function webform_results_clear_form_submit($form, &$form_state) { webform_results_clear($form_state['values']['nid']); $node = node_load($form_state['values']['nid']); + $node = webform_get_original_node($node); $title = $node->title; $message = t('Webform %title entries cleared.', array('%title' => $title)); @@ -311,6 +317,7 @@ function webform_results_clear_form_submit($form, &$form_state) { function webform_results_download_form($form, &$form_state, $node) { module_load_include('inc', 'webform', 'includes/webform.export'); module_load_include('inc', 'webform', 'includes/webform.components'); + $node = webform_get_original_node($node); $form = array(); @@ -497,6 +504,7 @@ function theme_webform_results_download_select_format($variables) { function webform_results_download($node, $format = 'delimited', $options = array()) { module_load_include('inc', 'webform', 'includes/webform.export'); module_load_include('inc', 'webform', 'includes/webform.components'); + $node = webform_get_original_node($node); $submission_information = array( 'serial' => t('Serial'), @@ -640,6 +648,7 @@ function webform_results_download($node, $format = 'delimited', $options = array * "Other" values within a select list. */ function webform_results_analysis($node, $sids = array(), $analysis_component = NULL) { + $node = webform_get_original_node($node); if (!is_array($sids)) { $sids = array(); } @@ -669,6 +678,7 @@ function webform_results_analysis($node, $sids = array(), $analysis_component = */ function theme_webform_results_analysis($variables) { $node = $variables['node']; + $node = webform_get_original_node($node); $data = $variables['data']; $sids = $variables['sids']; $analysis_component = $variables['component']; diff --git a/includes/webform.submissions.inc b/includes/webform.submissions.inc index 86b00c6..a2c5c09 100644 --- a/includes/webform.submissions.inc +++ b/includes/webform.submissions.inc @@ -20,6 +20,7 @@ */ function webform_submission_data($node, $submitted) { $data = array(); + $node = webform_get_original_node($node); foreach ($submitted as $cid => $values) { // Don't save pagebreaks as submitted data. @@ -49,6 +50,8 @@ function webform_submission_data($node, $submitted) { * The existing submission SID. */ function webform_submission_update($node, $submission) { + $node = webform_get_original_node($node); + // Allow other modules to modify the submission before saving. foreach (module_implements('webform_submission_presave') as $module) { $function = $module . '_webform_submission_presave'; @@ -100,6 +103,8 @@ function webform_submission_update($node, $submission) { * The new submission SID. */ function webform_submission_insert($node, $submission) { + $node = webform_get_original_node($node); + // The submission ID may already be set if being called as an update. if (!isset($submission->sid) && (!isset($submission->is_new) || $submission->is_new == FALSE)) { // Allow other modules to modify the submission before saving. @@ -151,6 +156,7 @@ function webform_submission_insert($node, $submission) { * ID of submission to be deleted (from webform_submitted_data). */ function webform_submission_delete($node, $submission) { + $node = webform_get_original_node_nid($node); // Iterate through all components and let each do cleanup if necessary. foreach ($node->webform['components'] as $cid => $component) { if (isset($submission->data[$cid])) { @@ -191,6 +197,7 @@ function webform_submission_delete($node, $submission) { */ function webform_submission_send_mail($node, $submission, $emails = NULL) { global $user; + $node = webform_get_original_node($node); // Get the list of e-mails we'll be sending. $emails = isset($emails) ? $emails : $node->webform['emails']; @@ -333,6 +340,7 @@ function webform_submission_send_mail($node, $submission, $emails = NULL) { * The submission to be deleted (from webform_submitted_data). */ function webform_submission_delete_form($form, $form_state, $node, $submission) { + $node = webform_get_original_node($node); webform_set_breadcrumb($node, $submission); // Set the correct page title. @@ -367,11 +375,13 @@ function webform_submission_delete_form($form, $form_state, $node, $submission) function webform_submission_delete_form_submit($form, &$form_state) { $node = node_load($form_state['values']['details']['nid']); + $original = $node; + $node = webform_get_original_node($node); $submission = webform_get_submission($form_state['values']['details']['nid'], $form_state['values']['details']['sid']); webform_submission_delete($node, $submission); drupal_set_message(t('Submission deleted.')); - $form_state['redirect'] = 'node/' . $node->nid . '/webform-results'; + $form_state['redirect'] = 'node/' . $original->nid . '/webform-results'; } /** @@ -386,6 +396,7 @@ function webform_submission_title($node, $submission) { */ function webform_submission_page($node, $submission, $format) { global $user; + $node = webform_get_original_node($node); // Render the admin UI breadcrumb. webform_set_breadcrumb($node, $submission); @@ -445,6 +456,7 @@ function webform_submission_page($node, $submission, $format) { * Form to resend specific e-mails associated with a submission. */ function webform_submission_resend($form, $form_state, $node, $submission) { + $node = webform_get_original_node($node); // Render the admin UI breadcrumb. webform_set_breadcrumb($node, $submission); @@ -500,6 +512,7 @@ function webform_submission_resend_validate($form, &$form_state) { */ function webform_submission_resend_submit($form, &$form_state) { $node = $form['#node']; + $node = webform_get_original_node($node); $submission = $form['#submission']; $emails = array(); @@ -557,6 +570,7 @@ function theme_webform_submission_resend($variables) { * Print a Webform submission for display on a page or in an e-mail. */ function webform_submission_render($node, $submission, $email, $format) { + $node = webform_get_original_node($node); $component_tree = array(); $renderable = array(); $page_count = 1; @@ -620,6 +634,11 @@ function webform_get_submissions($filters = array(), $header = NULL, $pager_coun unset($filters['uid']); } + // Use the original node nid instead of a possible translated one + if (isset($filters['nid'])) { + $filters['nid'] = webform_get_original_node_nid($filters['nid']); + } + // No need to find SIDs if it was given to us. if (isset($filters['sid'])) { $sids = array($filters['sid']); @@ -723,6 +742,7 @@ function webform_get_submissions($filters = array(), $header = NULL, $pager_coun */ function webform_get_submission_count($nid, $uid = NULL, $reset = FALSE) { static $counts; + $nid = webform_get_original_node_nid($nid); if (!isset($counts[$nid][$uid]) || $reset) { $query = db_select('webform_submissions') @@ -747,6 +767,7 @@ function webform_get_submission_count($nid, $uid = NULL, $reset = FALSE) { */ function webform_get_submission($nid, $sid, $reset = FALSE) { static $submissions = array(); + $nid = webform_get_original_node_nid($nid); if ($reset) { $submissions = array(); @@ -788,6 +809,7 @@ function _webform_submission_spam_check($to, $subject, $from, $headers = array() */ function _webform_submission_limit_check($node) { global $user; + $node = webform_get_original_node($node); // Check if submission limiting is enabled. if ($node->webform['submit_limit'] == '-1') { @@ -857,14 +879,15 @@ function template_preprocess_webform_submission(&$vars) { */ function template_preprocess_webform_submission_navigation(&$vars) { $start_path = ($vars['mode'] == 'print') ? 'print/' : 'node/'; + $node = webform_get_original_node($vars['node']); $previous_query = db_select('webform_submissions') - ->condition('nid', $vars['node']->nid) + ->condition('nid', $node->nid) ->condition('sid', $vars['submission']->sid, '<'); $previous_query->addExpression('MAX(sid)'); $next_query = db_select('webform_submissions') - ->condition('nid', $vars['node']->nid) + ->condition('nid', $node->nid) ->condition('sid', $vars['submission']->sid, '>'); $next_query->addExpression('MIN(sid)'); @@ -878,6 +901,7 @@ function template_preprocess_webform_submission_navigation(&$vars) { * Preprocess function for webform-submission-navigation.tpl.php. */ function template_preprocess_webform_submission_information(&$vars) { + $node = webform_get_original_node($vars['node']); $vars['account'] = user_load($vars['submission']->uid); - $vars['actions'] = theme('links', module_invoke_all('webform_submission_actions', $vars['node'], $vars['submission'])); + $vars['actions'] = theme('links', module_invoke_all('webform_submission_actions', $node, $vars['submission'])); } diff --git a/webform.module b/webform.module index ebc758f..34198c9 100644 --- a/webform.module +++ b/webform.module @@ -356,6 +356,7 @@ function webform_menu_load($nid) { return FALSE; } $node = node_load($nid); + $node = webform_get_original_node($node); if (!isset($node->type) || !in_array($node->type, webform_variable_get('webform_node_types'))) { return FALSE; } @@ -367,6 +368,7 @@ function webform_menu_load($nid) { */ function webform_menu_submission_load($sid, $nid) { module_load_include('inc', 'webform', 'includes/webform.submissions'); + $nid = $node = webform_get_original_node_nid($nid); $submission = webform_get_submission($nid, $sid); return empty($submission) ? FALSE : $submission; } @@ -376,6 +378,7 @@ function webform_menu_submission_load($sid, $nid) { */ function webform_menu_component_load($cid, $nid, $type) { module_load_include('inc', 'webform', 'includes/webform.components'); + $nid = $node = webform_get_original_node_nid($nid); if ($cid == 'new') { $components = webform_components(); $component = in_array($type, array_keys($components)) ? array('type' => $type, 'nid' => $nid, 'name' => $_GET['name'], 'mandatory' => $_GET['mandatory'], 'pid' => $_GET['pid'], 'weight' => $_GET['weight']) : FALSE; @@ -397,6 +400,7 @@ function webform_menu_component_load($cid, $nid, $type) { function webform_menu_email_load($eid, $nid) { module_load_include('inc', 'webform', 'includes/webform.emails'); $node = node_load($nid); + $node = webform_get_original_node($node); $email = webform_email_load($eid, $nid); if ($eid == 'new') { if (isset($_GET['option']) && isset($_GET['email'])) { @@ -415,6 +419,7 @@ function webform_menu_email_load($eid, $nid) { function webform_submission_access($node, $submission, $op = 'view', $account = NULL) { global $user; + $node = webform_get_original_node($node); $account = isset($account) ? $account : $user; $access_all = user_access('access all webform results', $account); @@ -448,6 +453,7 @@ function webform_submission_access($node, $submission, $op = 'view', $account = */ function webform_results_access($node, $account = NULL) { global $user; + $node = webform_get_original_node($node); $account = isset($account) ? $account : $user; $module_access = count(array_filter(module_invoke_all('webform_results_access', $node, $account))) > 0; @@ -457,6 +463,7 @@ function webform_results_access($node, $account = NULL) { function webform_results_clear_access($node, $account = NULL) { global $user; + $node = webform_get_original_node($node); $account = isset($account) ? $account : $user; $module_access = count(array_filter(module_invoke_all('webform_results_clear_access', $node, $account))) > 0; @@ -857,6 +864,7 @@ function webform_webform_select_options_info() { function webform_webform_submission_actions($node, $submission) { $actions = array(); $destination = drupal_get_destination(); + $node = webform_get_original_node($node); if (module_exists('print_pdf') && user_access('access PDF version')) { $actions['printpdf'] = array( @@ -1012,6 +1020,7 @@ function webform_node_insert($node) { * Implements hook_node_update(). */ function webform_node_update($node) { + $node = webform_get_original_node($node); if (!in_array($node->type, webform_variable_get('webform_node_types'))) { return; } @@ -1098,6 +1107,7 @@ function webform_node_update($node) { * Implements hook_delete(). */ function webform_node_delete($node) { + $node = webform_get_original_node($node); if (!in_array($node->type, webform_variable_get('webform_node_types'))) { return; } @@ -1147,6 +1157,7 @@ function webform_node_defaults() { * Implements hook_node_prepare(). */ function webform_node_prepare($node) { + $node = webform_get_original_node($node); $webform_types = webform_variable_get('webform_node_types'); if (in_array($node->type, $webform_types) && !isset($node->webform)) { $node->webform = webform_node_defaults(); @@ -1154,17 +1165,6 @@ function webform_node_prepare($node) { } /** - * Implements hook_node_prepare_translation(). - */ -function webform_node_prepare_translation(&$node) { - // Copy all Webform settings over to translated versions of this node. - if (isset($node->translation_source)) { - $source_node = node_load($node->translation_source->nid); - $node->webform = $source_node->webform; - } -} - -/** * Implements hook_node_load(). */ function webform_node_load($nodes, $types) { @@ -1174,25 +1174,40 @@ function webform_node_load($nodes, $types) { return; } + // Get the source nodes nids + $tnid_to_nid = array(); + $nid_to_tnid = array(); + foreach ($nodes as $nid => $node) { + if ($node->tnid != 0) { + $tnid_to_nid[$node->tnid] = $nid; + $nid_to_tnid[$nid] = $node->tnid; + } + else { + $tnid_to_nid[$nid] = $nid; + $nid_to_tnid[$nid] = $nid; + } + } + module_load_include('inc', 'webform', 'includes/webform.components'); // Select all webforms that match these node IDs. $result = db_select('webform') ->fields('webform') - ->condition('nid', array_keys($nodes), 'IN') + ->condition('nid', array_keys($tnid_to_nid), 'IN') ->execute() ->fetchAllAssoc('nid', PDO::FETCH_ASSOC); foreach ($result as $nid => $webform) { // Load the basic information for each node. - $nodes[$nid]->webform = $webform; - $nodes[$nid]->webform['record_exists'] = TRUE; + $nodes[$tnid_to_nid[$nid]]->webform = $webform; + $nodes[$tnid_to_nid[$nid]]->webform['record_exists'] = TRUE; } // Load the components, emails, and defaults for all webform-enabled nodes. // TODO: Increase efficiency here by pulling in all information all at once // instead of individual queries. foreach ($nodes as $nid => $node) { + $tnid = $nid_to_tnid[$nid]; if (!in_array($node->type, $webform_types)) { continue; } @@ -1205,12 +1220,12 @@ function webform_node_load($nodes, $types) { $nodes[$nid]->webform['roles'] = db_select('webform_roles') ->fields('webform_roles', array('rid')) - ->condition('nid', $nid) + ->condition('nid', $tnid) ->execute() ->fetchCol(); $nodes[$nid]->webform['emails'] = db_select('webform_emails') ->fields('webform_emails') - ->condition('nid', $nid) + ->condition('nid', $tnid) ->execute() ->fetchAllAssoc('eid', PDO::FETCH_ASSOC); @@ -1225,7 +1240,7 @@ function webform_node_load($nodes, $types) { // Load components for each node. $nodes[$nid]->webform['components'] = db_select('webform_component') ->fields('webform_component') - ->condition('nid', $nid) + ->condition('nid', $tnid) ->orderBy('weight') ->orderBy('name') ->execute() @@ -1233,7 +1248,7 @@ function webform_node_load($nodes, $types) { // Do a little cleanup on each component. foreach ($nodes[$nid]->webform['components'] as $cid => $component) { - $nodes[$nid]->webform['components'][$cid]['nid'] = $nid; + $nodes[$nid]->webform['components'][$cid]['nid'] = $tnid; $nodes[$nid]->webform['components'][$cid]['extra'] = unserialize($component['extra']); webform_component_defaults($nodes[$nid]->webform['components'][$cid]); } @@ -2436,6 +2451,9 @@ function template_preprocess_webform_mail_message(&$vars) { * Replacement for theme_form_element(). */ function theme_webform_element($variables) { + // translate labels + $variables['element']['#title'] = t($variables['element']['#title']); + // Ensure defaults. $variables['element'] += array( '#title_display' => 'before', @@ -3476,6 +3494,30 @@ function webform_strtodate($format, $string, $timezone_name = NULL) { } /** + * Get the original node from a possibly translated one + */ +function webform_get_original_node($node) { + if(!isset($node)){ + return $node; + } + if(isset($node->tnid)) { + if ($node->tnid != 0 && $node->nid != $node->tnid) { + return node_load($node->tnid); + } + } + return $node; +} + +/** + * Load the original nid from a possible translated node nid + */ +function webform_get_original_node_nid($nid) { + $node = node_load($nid); + $node = webform_get_original_node($node); + return $node->nid; +} + +/** * Get a timestamp in GMT time, ensuring timezone accuracy. */ function webform_strtotime($date) {