diff --git a/webform_confirm_email.admin.inc b/webform_confirm_email.admin.inc index 9b0305d..1f7a1e1 100644 --- a/webform_confirm_email.admin.inc +++ b/webform_confirm_email.admin.inc @@ -515,17 +515,6 @@ function webform_confirm_email_confirmation_email_add($form, &$form_state) { } /** - * implements hook_theme_registry_alter(). - * - * insert 2 theme hooks for the 'webform_emails_form' and the 'webform_email_add_form' - */ -function webform_confirm_email_theme_registry_alter(&$theme_registry) { - - $theme_registry['webform_emails_form']['function'] = 'theme_webform_confirm_email_emails_form'; - $theme_registry['webform_email_add_form']['function'] = 'theme_webform_confirm_email_email_add_form'; -} - -/** * theme hook defined in hook_theme_registry_alter(). * * includes the original theme hook for the 'webform_emails_form' and adds handling of diff --git a/webform_confirm_email.module b/webform_confirm_email.module index a8d4034..935fba7 100644 --- a/webform_confirm_email.module +++ b/webform_confirm_email.module @@ -639,29 +639,43 @@ function webform_confirm_email_cron() { } /** - * Implements hook_theme(). + * Implements hook_theme_registry_alter(). */ -function webform_confirm_email_theme() { - return array( - 'webform_confirm_email_results_submissions' => array( - 'render element' => 'element', - 'template' => 'templates/webform-confirm-email-results-submissions', - 'file' => 'webform_confirm_email.report.inc', - ), - 'webform_confirm_email_results_table' => array( - 'variables' => array( - 'confirmed_form' => NULL, - 'node' => NULL, - 'components' => NULL, - 'submissions' => NULL, - 'total_count' => NULL, - 'pager_count' => NULL, - ), - 'file' => 'webform_confirm_email.report.inc', - ), - ); +function webform_confirm_email_theme_registry_alter(&$registry) { + $path = drupal_get_path('module', 'webform_confirm_email'); + + $t = &$registry['webform_results_submissions']; + if ($t['type'] == 'module') { + $t['template'] = $path . '/templates/webform-results-submissions'; + $t['file'] = 'webform_confirm_email.report.inc'; + $t['includes'][] = $path . '/webform_confirm_email.report.inc'; + $t['theme path'] = $path; + $functions = []; + foreach ($t['preprocess functions'] as $f) { + if ($f == 'template_preprocess_webform_results_submissions') { + $functions[] = 'template_preprocess_webform_confirm_email_results_submissions'; + } + $functions[] = $f; + } + $t['preprocess functions'] = $functions; + } + unset($t); + + $t = &$registry['webform_results_table']; + if ($t['type'] == 'module') { + $t['file'] = 'webform_confirm_email.report.inc'; + $t['includes'][] = $path . '/webform_confirm_email.report.inc'; + $t['theme path'] = $path; + $t['variables']['confirmed_form'] = NULL; + $t['function'] = 'theme_webform_confirm_email_results_table'; + } + unset($t); + + $registry['webform_emails_form']['function'] = 'theme_webform_confirm_email_emails_form'; + $registry['webform_email_add_form']['function'] = 'theme_webform_confirm_email_email_add_form'; } + /** * Implements hook_webform_template_insert(). */ diff --git a/webform_confirm_email.report.inc b/webform_confirm_email.report.inc index b3c6695..6cc4f52 100644 --- a/webform_confirm_email.report.inc +++ b/webform_confirm_email.report.inc @@ -57,75 +57,19 @@ function webform_confirm_email_confirmed_filter_form_submit($form, &$form_state) } function webform_confirm_email_results_submissions($node, $user_filter, $pager_count) { - global $user; + global $conf; // Load this early on so that the filter is set before executing the queries. - $element['confirmed_form'] = drupal_get_form('webform_confirm_email_confirmed_filter_form'); + $form = drupal_get_form('webform_confirm_email_confirmed_filter_form'); - if (isset($_GET['results']) && is_numeric($_GET['results'])) { - $pager_count = $_GET['results']; + $table = NULL; + if (isset($conf['webform_table'])) { + $table = $conf['webform_table']; } - - $header = theme('webform_results_submissions_header', array('node' => $node)); - if ($user_filter) { - if ($user->uid) { - drupal_set_title(t('Submissions for %user', array('%user' => $user->name)), PASS_THROUGH); - } - else { - drupal_set_title(t('Your submissions')); - webform_disable_page_cache(); - } - $submissions = webform_get_submissions(array('nid' => $node->nid, 'uid' => $user->uid), $header, $pager_count); - $count = webform_get_submission_count($node->nid, $user->uid, NULL); - } - else { - $submissions = webform_get_submissions($node->nid, $header, $pager_count); - $count = webform_get_submission_count($node->nid, NULL, NULL); - } - - $operation_column = end($header); - $operation_total = $operation_column['colspan']; - - $rows = array(); - foreach ($submissions as $sid => $submission) { - $row = array( - $submission->is_draft ? t('@serial (draft)', array('@serial' => $submission->serial)) : $submission->serial, - format_date($submission->submitted, 'short'), - ); - if (webform_results_access($node, $user)) { - $row[] = theme('username', array('account' => $submission)); - $row[] = $submission->remote_addr; - } - $row[] = l(t('View'), "node/$node->nid/submission/$sid"); - $operation_count = 1; - // No need to call this multiple times, just reference this in a variable. - $destination = drupal_get_destination(); - if (webform_submission_access($node, $submission, 'edit', $user)) { - $row[] = l(t('Edit'), "node/$node->nid/submission/$sid/edit", array('query' => $destination)); - $operation_count++; - } - if (webform_submission_access($node, $submission, 'delete', $user)) { - $row[] = l(t('Delete'), "node/$node->nid/submission/$sid/delete", array('query' => $destination)); - $operation_count++; - } - if ($operation_count < $operation_total) { - $row[count($row) - 1] = array('data' => $row[count($row) - 1], 'colspan' => $operation_total - $operation_count + 1); - } - $rows[] = $row; - } - - $element['#theme'] = 'webform_confirm_email_results_submissions'; - $element['#node'] = $node; - $element['#submissions'] = $submissions; - $element['#total_count'] = $count; - $element['#pager_count'] = $pager_count; - $element['#attached']['library'][] = array('webform', 'admin'); - - $element['table']['#theme'] = 'table'; - $element['table']['#header'] = $header; - $element['table']['#rows'] = $rows; - $element['table']['#operation_total'] = $operation_total; - + $conf['webform_table'] = TRUE; + $element = webform_results_submissions($node, $user_filter, $pager_count); + $conf['webform_table'] = $table; + $element['confirmed_form'] = $form; return $element; } @@ -133,53 +77,31 @@ function webform_confirm_email_results_submissions($node, $user_filter, $pager_c * Preprocess function for webform-confirm-email-results-submissions.tpl.php */ function template_preprocess_webform_confirm_email_results_submissions(&$vars) { - $vars['node'] = $vars['element']['#node']; - $vars['submissions'] = $vars['element']['#submissions']; $vars['confirmed_form'] = $vars['element']['confirmed_form']; - $vars['table'] = $vars['element']['table']; - $vars['total_count'] = $vars['element']['#total_count']; - $vars['pager_count'] = $vars['element']['#pager_count']; - $vars['is_submissions'] = (arg(2) == 'submissions')? 1 : 0; - - unset($vars['element']); } /** * Create a table containing all submitted values for a webform node. */ function webform_confirm_email_results_table($node, $pager_count = 0) { - if (isset($_GET['results']) && is_numeric($_GET['results'])) { - $pager_count = $_GET['results']; - } + global $conf; // Load this early on so that the filter is set before executing the queries. - $confirmed_form = drupal_get_form('webform_confirm_email_confirmed_filter_form'); - - // Get all the submissions for the node. - $header = theme('webform_results_table_header', array('node' => $node)); - $submissions = webform_get_submissions($node->nid, $header, $pager_count); - $total_count = webform_get_submission_count($node->nid); - - $output = theme( - 'webform_confirm_email_results_table', - array( - 'confirmed_form' => $confirmed_form, - 'node' => $node, - 'components' => $node->webform['components'], - 'submissions' => $submissions, - 'total_count' => $total_count, - 'pager_count' => $pager_count - ) - ); - if ($pager_count) { - $output .= theme('pager'); + $form = drupal_get_form('webform_confirm_email_confirmed_filter_form'); + + $table = NULL; + if (isset($conf['webform_table'])) { + $table = $conf['webform_table']; } + $conf['webform_table'] = TRUE; + $output = webform_results_table($node, $pager_count); + $conf['webform_table'] = $table; + $output[0]['#confirmed_form'] = $form; return $output; } function theme_webform_confirm_email_results_table($variables) { $output = drupal_render($variables['confirmed_form']); $output .= theme_webform_results_table($variables); - return $output; }