diff --git a/feedback-entry.tpl.php b/feedback-entry.tpl.php index 4059a7f..3e6679f 100644 --- a/feedback-entry.tpl.php +++ b/feedback-entry.tpl.php @@ -23,7 +23,7 @@
- +
diff --git a/feedback.admin.inc b/feedback.admin.inc index 1e517a1..fe0bebe 100644 --- a/feedback.admin.inc +++ b/feedback.admin.inc @@ -19,6 +19,7 @@ function feedback_admin_view_form($form, &$form_state) { array('data' => t('Date'), 'field' => 'f.timestamp'), array('data' => t('User'), 'field' => 'u.name'), t('Message'), + t('Delete'), ); // Hack to prevent pager_query() from issuing PHP notices. if (!isset($_GET['page'])) { @@ -56,7 +57,8 @@ function feedback_admin_view_form($form, &$form_state) { $form['feedback-messages'][$status][$fid]['location'] = array('#markup' => l(truncate_utf8($entry->location, 32, FALSE, TRUE), $entry->url)); $form['feedback-messages'][$status][$fid]['date'] = array('#markup' => format_date($entry->timestamp, 'small')); $form['feedback-messages'][$status][$fid]['user'] = array('#markup' => format_username($entry)); - $form['feedback-messages'][$status][$fid]['message'] = array('#markup' => feedback_format_message($entry)); + $form['feedback-messages'][$status][$fid]['message'] = feedback_format_message($entry); + $form['feedback-messages'][$status][$fid]['delete'] = array('#type' => 'link', '#title' => t('delete'), '#href' => "admin/reports/feedback/$fid/delete"); } } } @@ -86,12 +88,13 @@ function theme_feedback_admin_view_form($variables) { drupal_render($entry['date']), drupal_render($entry['user']), drupal_render($entry['message']), + drupal_render($entry['delete']), ); // Render the checkbox. $rows[count($rows) - 1][0] = drupal_render($entry); } if (empty($rows)) { - $rows[] = array(array('data' => t('No feedback entries available.'), 'colspan' => 5)); + $rows[] = array(array('data' => t('No feedback entries available.'), 'colspan' => 6)); } // Inject the table. $item['messages'] = array( @@ -227,3 +230,28 @@ function template_preprocess_feedback_entry(&$variables) { $variables['message'] = feedback_format_message($entry); } +/** + * Menu callback; confirm deletion of a feedback entry. + * + * @ingroup forms + * @see feedback_delete_confirm_submit() + */ +function feedback_delete_confirm($form, &$form_state, $entry) { + $form['fid'] = array('#type' => 'value', '#value' => $entry->fid); + $output = confirm_form($form, + t('Are you sure you want to delete the feedback entry?'), + 'admin/reports/feedback', + NULL, + t('Delete')); + return $output; +} + +/** + * Process feedback_delete_confirm form submissions. + */ +function feedback_delete_confirm_submit($form, &$form_state) { + feedback_delete($form_state['values']['fid']); + drupal_set_message(t('The feedback entry was deleted.')); + + $form_state['redirect'] = 'admin/reports/feedback'; +} diff --git a/feedback.module b/feedback.module index cb3bb30..b7a2a59 100644 --- a/feedback.module +++ b/feedback.module @@ -113,6 +113,13 @@ function feedback_menu() { 'access arguments' => array('view feedback messages'), 'file' => 'feedback.admin.inc', ); + $items['admin/reports/feedback/%feedback/delete'] = array( + 'title' => 'Delete feedback entry', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('feedback_delete_confirm', 3), + 'access arguments' => array('view feedback messages'), + 'file' => 'feedback.admin.inc', + ); $items['admin/config/user-interface/feedback'] = array( 'title' => 'Feedback', 'description' => 'Administer feedback settings.', @@ -212,16 +219,15 @@ function feedback_form($form, &$form_state) { $feedbacks = feedback_load_multiple(array(), array('status' => FEEDBACK_OPEN, 'location' => $_GET['q'])); } if ($feedbacks) { - $rows = ''; - foreach ($feedbacks as $feedback) { - $rows .= '
' . format_username($feedback) . ' ' . format_date($feedback->timestamp, 'small') . ':
'; - $rows .= '
'. feedback_format_message($feedback) .'
'; - } $form['messages'] = array( '#prefix' => '
', - '#markup' => $rows, '#suffix' => '
', ); + foreach ($feedbacks as $fid => $feedback) { + $form['messages'][$fid] = feedback_format_message($feedback); + $form['messages'][$fid]['#prefix'] = '
' . format_username($feedback) . ' ' . format_date($feedback->timestamp, 'small') . ':
'; + $form['messages'][$fid]['#suffix'] = '
'; + } } } $form['message'] = array( @@ -332,9 +338,14 @@ function feedback_format_message($entry) { } $uri = entity_uri('feedback', $entry); if ($uri['path'] != $_GET['q']) { - $message .= l("view full", $uri['path']); + $links['view'] = array('title' => t('view'), 'href' => $uri['path']); + } + else { + $links['delete'] = array('title' => t('delete'), 'href' => $uri['path'] . '/delete'); } - return $message; + $elements['message'] = array('#markup' => $message); + $elements['links'] = array('#theme' => 'links__feedback_message', '#links' => $links); + return $elements; } /**