updated to 7.x-2.x-dev (2013-Mar-04)

This commit is contained in:
Bachir Soussi Chiadmi 2013-10-12 13:24:57 +02:00
parent a2b9816e52
commit ca63b9bbca
23 changed files with 201 additions and 185 deletions

View File

@ -1,70 +0,0 @@
Feedback 7.x-2.x, xxxx-xx-xx
----------------------------
#1027786 by Jody Lynn, sun: Removed soft-dependency on Block module.
#323506 by Jody Lynn, tim.plunkett | zilla: Added Allow to delete items.
#470316 by Jody Lynn | smk-ka: Added Visibility settings.
#1014726 by Jody Lynn: Changed Add constants for feedback status codes.
#775322 by Jody Lynn: Mollom integration
#351698 by Jody Lynn and sun: feedback is now a fieldable entity!
#1086552 by Dru-p, Jody Lynn, sun: prevent PHP notice
by Jody Lynn: spelling error in comment
by The Great Git Migration: Stripping CVS keywords
#305744 by sun: Replaced custom JS form submissions with AJAX framework.
by sun: Updated for new resizable textarea markup.
#402438 by sun: Fixed minor CRUD API glitches and cleaned up code.
#402438 by Jody Lynn, sun: Added proper CRUD API functions and hooks.
by sun: Added basic tests.
#1011152 by sun, Jody Lynn: Removed translations directory.
#961674 by pmorel, sun: Updated for various D7 API changes.
by sun: Ported to Drupal 7.
Feedback 6.x-2.x, xxxx-xx-xx
----------------------------
#730582 by q0rban, Michel Poulain, sun: Fixed styling in WebKit browsers.
#387818 by antgiant: Fixed width of feedback textarea.
#688306 by Berdir: Fixed compatibility with PHP 5.3.
Feedback 6.x-2.1, 2010-01-27
----------------------------
#690856 by sun (SA-2010-011): Fixed un-escaped user agent string.
by sun: Fixed JS behaviors are executed more than once.
#636158 by smk-ka: Changed administrative page callbacks to be located in admin
include.
#370223 by sun, Jeff Burnz: Fixed compatibility with custom block markup.
#341667 by sun: Fixed IE6 does not support position: fixed.
#409590 by sun: Added storage and output of absolute URL for feedback messages.
#378878 by jcruz, sun: Added display of useragent if Browscap is not installed.
#364388 by xibun: Added French translation.
#357247 by cassus: Added Hungarian translation.
#350356 by sun: Fixed README.txt.
#299847 by sun: Fixed pager not properly generated for admin list of feedbacks.
#302358 by sun: Fixed upgrade path to Drupal 6.x.
Feedback 6.x-2.0, 2008-10-19
----------------------------
#322135 by sun: Fixed FAPI callbacks, DB query arguments, and PHP notices.
#285972 by wikidkaka, sun: Fixed compatibility with Zen Classic theme.
#302358 by sun: Removed dependency on jQuery Update module.
#302358 by sun: Ported Feedback to Drupal 6.x.
#305713 by eliosh: Added Italian translation.
Feedback 5.x-2.0, 2008-07-16
----------------------------
#279636 by smk-ka: Added BrowsCap support to record and output user agents.
#279636 by sun: Usability: Added AJAX throbber to indicate form submission.
#279636 by sun: Added administrative user interface form to allow marking
feedback entries as processed.
#279636 by sun: Added log of previous feedbacks to feedback form to prevent
duplicates. Uses 'masked' paths (much like D6) to include all feedbacks with
the same path pattern like the current page (except of node/%).
#279636 by sun: Fixed compatibility with (hopefully) all themes.
#279636 by sun: Fixed compatibility with Bluemarine, Marvin, and Pushbutton
themes.
#279636 by sun: Fixed compatibility with Garland theme.
Initial commit of Feedback 2.x.

0
LICENSE.txt Normal file → Executable file
View File

9
README.txt Normal file → Executable file
View File

@ -29,15 +29,16 @@ To submit bug reports and feature suggestions, or to track changes:
-- CONFIGURATION --
* Configure user permissions in Administration » People » Permissions »
Feedback.
* Configure fields at Administration » Configuration » User interface »
Feedback
Feedback.
* Configure fields at Administration » Configuration » User interface »
Feedback.
-- USAGE --
* To view all feedback messages, go to Administration » Reports » Feedback
messages
messages.
-- CONTACT --

0
feedback-entry.tpl.php Normal file → Executable file
View File

0
feedback-form-display.tpl.php Normal file → Executable file
View File

74
feedback.admin.inc Normal file → Executable file
View File

@ -9,6 +9,8 @@
* Build a (sortable) form containing a checkbox for each feedback entry.
*/
function feedback_admin_view_form($form, &$form_state) {
$form['#attached']['js'][] = drupal_get_path('module', 'feedback') . '/feedback.admin.js';
$status_headings = array(
FEEDBACK_OPEN => t('Open feedback messages'),
FEEDBACK_PROCESSED => t('Processed feedback messages'),
@ -57,7 +59,7 @@ 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' => check_plain(format_username($entry)));
$form['feedback-messages'][$status][$fid]['message'] = feedback_format_message($entry);
$form['feedback-messages'][$status][$fid]['message'] = feedback_build_content($entry, 'teaser');
$form['feedback-messages'][$status][$fid]['operations'] = array(
'#theme' => 'links',
'#links' => array(
@ -206,6 +208,9 @@ function feedback_entry_form($form, &$form_state, $entry) {
/**
* Form submit callback for entry edit form.
*
* @todo Duplicates feedback_form_submit(). Add all default entity properties
* as #type 'value' to feedback_form() and merge the two submit handlers.
*/
function feedback_entry_form_submit(&$form, &$form_state) {
$entry = feedback_load($form['#fid']);
@ -248,34 +253,35 @@ function feedback_admin_settings_form($form, &$form_state) {
}
/**
* Generate an array for rendering the given entry.
* Generate a render array for viewing a feedback entry.
*
* @param $entry
* A feedback entry object.
* @param $view_mode
* View mode, e.g. 'full'.
* View mode, e.g. 'full', 'teaser'...
* @param $langcode
* (optional) A language code to use for rendering. Defaults to the global
* content language of the current request.
*
* @return
* An array as expected by drupal_render().
*
* @todo This is an API function; move into feedback.module.
*/
function feedback_view($entry, $view_mode = 'full', $langcode = NULL) {
if (!isset($langcode)) {
$langcode = $GLOBALS['language_content']->language;
}
// Retrieve all entry fields and attach to $entry->content.
// Populate $entry->content with a render() array.
feedback_build_content($entry, $view_mode, $langcode);
$build = $entry->content;
// We don't need duplicate rendering info in entry->content.
unset($entry->content);
$build += array(
'#theme' => 'feedback_entry',
'#entry' => $entry,
'#feedback' => $entry,
'#view_mode' => $view_mode,
'#language' => $langcode,
);
@ -288,26 +294,68 @@ function feedback_view($entry, $view_mode = 'full', $langcode = NULL) {
}
/**
* Builds a structured array representing the feedback message content.
* Builds a structured array representing the feedback entry's content.
*
* @param $entry
* A feedback entry object.
* @param $view_mode
* View mode, e.g. 'full'.
* View mode, e.g. 'full', 'teaser'...
* @param $langcode
* (optional) A language code to use for rendering. Defaults to the global
* content language of the current request.
*
* @todo This is an API function; move into feedback.module.
*/
function feedback_build_content($entry, $view_mode = 'full', $langcode = NULL) {
if (!isset($langcode)) {
$langcode = $GLOBALS['language_content']->language;
}
// Remove previously built content, if exists.
$entry->content = array();
// Allow modules to change the view mode.
$context = array(
'entity_type' => 'feedback',
'entity' => $entry,
'langcode' => $langcode,
);
drupal_alter('entity_view_mode', $view_mode, $context);
$entry->content['message'] = array(
'#markup' => check_plain($entry->message),
);
if (!empty($entry->useragent)) {
$entry->content['browser'] = array(
'#theme' => 'container',
'#attributes' => array('class' => array('browserinfo', 'description')),
);
if (module_exists('browscap')) {
$browserinfo = browscap_get_browser($entry->useragent);
// Browscap returns useragent but not always parent info.
$browser = (isset($browserinfo['parent']) ? $browserinfo['parent'] . ' / ' . $browserinfo['platform'] : $browserinfo['useragent']);
$entry->content['browser']['#markup'] = check_plain($browser);
}
else {
$entry->content['browser']['#markup'] = check_plain($entry->useragent);
}
}
// Build fields content.
field_attach_prepare_view('feedback', array($entry->fid => $entry), $view_mode);
entity_prepare_view('feedback', array($entry->fid => $entry));
$entry->content = field_attach_view('feedback', $entry, $view_mode, $langcode);
field_attach_prepare_view('feedback', array($entry->fid => $entry), $view_mode, $langcode);
entity_prepare_view('feedback', array($entry->fid => $entry), $langcode);
$entry->content += field_attach_view('feedback', $entry, $view_mode, $langcode);
$entry->content['links'] = array(
'#theme' => 'links__feedback',
'#pre_render' => array('drupal_pre_render_links'),
'#attributes' => array('class' => array('links', 'inline')),
);
$uri = entity_uri('feedback', $entry);
if ($uri['path'] != $_GET['q'] && arg(0) != 'admin') {
$entry->content['links']['#links']['view'] = array('title' => t('view'), 'href' => $uri['path']);
}
// Allow modules to make their own additions to the entry.
module_invoke_all('feedback_view', $entry, $view_mode, $langcode);
module_invoke_all('entity_view', $entry, 'feedback', $view_mode, $langcode);
}
@ -324,8 +372,7 @@ function template_preprocess_feedback_entry(&$variables) {
foreach (element_children($variables['elements']) as $key) {
$variables['content'][$key] = $variables['elements'][$key];
}
$entry = $variables['elements']['#entry'];
$entry = $variables['elements']['#feedback'];
// Preprocess fields.
field_attach_preprocess('feedback', $entry, $variables['elements'], $variables);
@ -333,7 +380,6 @@ function template_preprocess_feedback_entry(&$variables) {
$variables['location'] = l($entry->location, $entry->url);
$variables['date'] = format_date($entry->timestamp, 'small');
$variables['account'] = check_plain(format_username($entry));
$variables['message'] = feedback_format_message($entry);
}
/**

16
feedback.admin.js Executable file
View File

@ -0,0 +1,16 @@
(function ($) {
/**
* Attach auto-submit to admin view form.
*/
Drupal.behaviors.feedbackAdminForm = {
attach: function (context) {
$('#feedback-admin-view-form', context).once('feedback', function () {
$(this).find('fieldset.feedback-messages :input[type="checkbox"]').click(function () {
this.form.submit();
});
});
}
};
})(jQuery);

0
feedback.api.php Normal file → Executable file
View File

0
feedback.controller.inc Normal file → Executable file
View File

0
feedback.css Normal file → Executable file
View File

4
feedback.info Normal file → Executable file
View File

@ -9,9 +9,9 @@ files[] = views/feedback_handler_field_feedback_link_delete.inc
files[] = views/feedback_handler_field_feedback_link_edit.inc
files[] = tests/feedback.test
; Information added by drupal.org packaging script on 2012-11-10
; Information added by drupal.org packaging script on 2013-03-04
version = "7.x-2.x-dev"
core = "7.x"
project = "feedback"
datestamp = "1352509461"
datestamp = "1362358407"

13
feedback.js Normal file → Executable file
View File

@ -1,18 +1,5 @@
(function ($) {
/**
* Attach auto-submit to admin view form.
*/
Drupal.behaviors.feedbackAdminForm = {
attach: function (context) {
$('#feedback-admin-view-form', context).once('feedback', function () {
$(this).find('fieldset.feedback-messages :input[type="checkbox"]').click(function () {
this.form.submit();
});
});
}
};
/**
* Attach collapse behavior to the feedback form block.
*/

96
feedback.module Normal file → Executable file
View File

@ -63,6 +63,14 @@ function feedback_entity_info() {
'label' => t('Full feedback entry'),
'custom settings' => FALSE,
),
'teaser' => array(
'label' => t('Teaser'),
'custom settings' => FALSE,
),
'widget' => array(
'label' => t('Widget'),
'custom settings' => FALSE,
),
),
// Disable Metatags (metatag) module's entity form additions.
'metatags' => FALSE,
@ -72,6 +80,49 @@ function feedback_entity_info() {
return $return;
}
/**
* Implements hook_field_extra_fields().
*/
function feedback_field_extra_fields() {
$extras['feedback']['feedback']['form']['help'] = array(
'label' => t('Help'),
'description' => t('Feedback submission guidelines'),
'weight' => -10,
);
$extras['feedback']['feedback']['form']['messages'] = array(
'label' => t('Entries'),
'description' => t('Existing feedback entries for the current page'),
'weight' => -5,
);
$extras['feedback']['feedback']['form']['message'] = array(
'label' => t('Message'),
'description' => t('Feedback message form text field'),
'weight' => 0,
);
$extras['feedback']['feedback']['display']['location'] = array(
'label' => t('Location'),
'description' => t('The URL of the page the message was submitted on'),
'weight' => -15,
);
$extras['feedback']['feedback']['display']['date'] = array(
'label' => t('Date'),
'description' => t('The submission date of the message'),
'weight' => -10,
);
$extras['feedback']['feedback']['display']['user'] = array(
'label' => t('User'),
'description' => t('The name of the user who submitted the message'),
'weight' => -5,
);
$extras['feedback']['feedback']['display']['message'] = array(
'label' => t('Message'),
'description' => t('The main feedback message'),
'weight' => 0,
);
return $extras;
}
/**
* Entity uri callback.
*/
@ -157,17 +208,6 @@ function feedback_menu() {
return $items;
}
/**
* Implements hook_init().
*/
function feedback_init() {
if (user_access('access feedback form')) {
$path = drupal_get_path('module', 'feedback');
drupal_add_css($path . '/feedback.css');
drupal_add_js($path . '/feedback.js');
}
}
/**
* Implements hook_page_build().
*/
@ -178,6 +218,9 @@ function feedback_page_build(&$page) {
'#title' => t('Feedback'),
'#content' => drupal_get_form('feedback_form'),
);
$path = drupal_get_path('module', 'feedback');
$page['page_bottom']['feedback']['#attached']['css'][] = $path . '/feedback.css';
$page['page_bottom']['feedback']['#attached']['js'][] = $path . '/feedback.js';
}
}
@ -238,6 +281,7 @@ function feedback_form($form, &$form_state) {
$feedbacks = feedback_load_multiple(array(), array('status' => FEEDBACK_OPEN, 'location' => $_GET['q']));
}
if ($feedbacks) {
form_load_include($form_state, 'inc', 'feedback', 'feedback.admin');
$form['messages'] = array(
'#prefix' => '<div class="feedback-messages">',
'#suffix' => '</div>',
@ -247,7 +291,7 @@ function feedback_form($form, &$form_state) {
$form['messages'][$fid]['submitted'] = array('#markup' => t('@feedback-author !feedback-date:', array('@feedback-author' => format_username($feedback), '!feedback-date' => format_date($feedback->timestamp, 'small'))));
$form['messages'][$fid]['submitted']['#prefix'] = '<div class="feedback-submitted">';
$form['messages'][$fid]['submitted']['#suffix'] = '</div>';
$form['messages'][$fid]['body'] = feedback_format_message($feedback);
$form['messages'][$fid]['body'] = feedback_build_content($feedback, 'widget');
$form['messages'][$fid]['body']['#prefix'] = '<div class="feedback-body">';
$form['messages'][$fid]['body']['#suffix'] = '</div>';
}
@ -340,34 +384,6 @@ function feedback_form_ajax_callback($form, &$form_state) {
return $build;
}
/**
* Returns HTML for a feedback entry.
*
* @param $entry
* A feedback object.
*/
function feedback_format_message($entry) {
$message = check_plain($entry->message);
if (!empty($entry->useragent)) {
if (module_exists('browscap')) {
$browserinfo = browscap_get_browser($entry->useragent);
// Browscap returns useragent but not always parent info.
$browser = (isset($browserinfo['parent']) ? $browserinfo['parent'] . ' / ' . $browserinfo['platform'] : $browserinfo['useragent']);
$message .= '<div class="browserinfo">(' . check_plain($browser) . ')</div>';
}
else {
$message .= '<div class="browserinfo">(' . check_plain($entry->useragent) . ')</div>';
}
}
$elements['message'] = array('#markup' => $message);
$uri = entity_uri('feedback', $entry);
if ($uri['path'] != $_GET['q']) {
$links['view'] = array('title' => t('view'), 'href' => $uri['path']);
$elements['links'] = array('#theme' => 'links__feedback_message', '#links' => $links);
}
return $elements;
}
/**
* Loads a feedback entry from the database.
*

0
images/throbber.gif Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

0
tests/feedback.test Normal file → Executable file
View File

View File

@ -1,13 +0,0 @@
name = Feedback testing
description = Tests Feedback module functionality. Do not enable.
core = 7.x
package = Testing
hidden = TRUE
dependencies[] = feedback
; Information added by drupal.org packaging script on 2012-11-10
version = "7.x-2.x-dev"
core = "7.x"
project = "feedback"
datestamp = "1352509461"

View File

@ -1,7 +0,0 @@
<?php
/**
* @file
* Installation functionality for Feedback testing module.
*/

View File

@ -1,7 +0,0 @@
<?php
/**
* @file
* Testing functionality for Feedback module.
*/

0
views/feedback.views.inc Normal file → Executable file
View File

51
views/feedback.views_default.inc Normal file → Executable file
View File

@ -66,7 +66,7 @@ function feedback_views_default_views() {
),
'message' => array(
'align' => '',
'separator' => '',
'separator' => ' ',
'empty_column' => 0,
),
'useragent' => array(
@ -102,7 +102,9 @@ function feedback_views_default_views() {
$handler->display->display_options['empty']['area']['id'] = 'area';
$handler->display->display_options['empty']['area']['table'] = 'views';
$handler->display->display_options['empty']['area']['field'] = 'area';
$handler->display->display_options['empty']['area']['content'] = 'There are no feedback entries.';
$handler->display->display_options['empty']['area']['empty'] = TRUE;
$handler->display->display_options['empty']['area']['content'] = 'There are no open feedback entries.';
$handler->display->display_options['empty']['area']['format'] = 'filtered_html';
/* Relationship: Feedback: User Id */
$handler->display->display_options['relationships']['uid']['id'] = 'uid';
$handler->display->display_options['relationships']['uid']['table'] = 'feedback';
@ -140,18 +142,18 @@ function feedback_views_default_views() {
$handler->display->display_options['fields']['view_entry']['field'] = 'view_entry';
$handler->display->display_options['fields']['view_entry']['label'] = '';
$handler->display->display_options['fields']['view_entry']['element_label_colon'] = FALSE;
/* Field: Feedback: Delete entry */
$handler->display->display_options['fields']['view_entry_delete']['id'] = 'view_entry_delete';
$handler->display->display_options['fields']['view_entry_delete']['table'] = 'feedback';
$handler->display->display_options['fields']['view_entry_delete']['field'] = 'view_entry_delete';
$handler->display->display_options['fields']['view_entry_delete']['label'] = '';
$handler->display->display_options['fields']['view_entry_delete']['element_label_colon'] = FALSE;
/* Field: Feedback: Edit entry */
$handler->display->display_options['fields']['view_entry_edit']['id'] = 'view_entry_edit';
$handler->display->display_options['fields']['view_entry_edit']['table'] = 'feedback';
$handler->display->display_options['fields']['view_entry_edit']['field'] = 'view_entry_edit';
$handler->display->display_options['fields']['view_entry_edit']['label'] = '';
$handler->display->display_options['fields']['view_entry_edit']['element_label_colon'] = FALSE;
/* Field: Feedback: Delete entry */
$handler->display->display_options['fields']['view_entry_delete']['id'] = 'view_entry_delete';
$handler->display->display_options['fields']['view_entry_delete']['table'] = 'feedback';
$handler->display->display_options['fields']['view_entry_delete']['field'] = 'view_entry_delete';
$handler->display->display_options['fields']['view_entry_delete']['label'] = '';
$handler->display->display_options['fields']['view_entry_delete']['element_label_colon'] = FALSE;
/* Sort criterion: Feedback: Timestamp */
$handler->display->display_options['sorts']['timestamp']['id'] = 'timestamp';
$handler->display->display_options['sorts']['timestamp']['table'] = 'feedback';
@ -163,9 +165,17 @@ function feedback_views_default_views() {
$handler->display->display_options['filters']['status']['value'] = '0';
$handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
/* Display: Page */
$handler = $view->new_display('page', 'Page', 'page_1');
/* Display: Open Entries */
$handler = $view->new_display('page', 'Open Entries', 'page_1');
$handler->display->display_options['defaults']['hide_admin_links'] = FALSE;
$handler->display->display_options['defaults']['header'] = FALSE;
/* Header: Global: Text area */
$handler->display->display_options['header']['text']['id'] = 'text';
$handler->display->display_options['header']['text']['table'] = 'views';
$handler->display->display_options['header']['text']['field'] = 'area';
$handler->display->display_options['header']['text']['empty'] = TRUE;
$handler->display->display_options['header']['text']['content'] = '<h3>Open Feedback Messages</h3>';
$handler->display->display_options['header']['text']['format'] = 'full_html';
$handler->display->display_options['path'] = 'admin/reports/feedback';
$handler->display->display_options['menu']['type'] = 'normal';
$handler->display->display_options['menu']['title'] = 'Feedback messages';
@ -173,17 +183,27 @@ function feedback_views_default_views() {
$handler->display->display_options['menu']['weight'] = '0';
$handler->display->display_options['menu']['name'] = 'management';
/* Display: Attachment */
$handler = $view->new_display('attachment', 'Attachment', 'attachment_1');
/* Display: Processed Entries */
$handler = $view->new_display('attachment', 'Processed Entries', 'attachment_1');
$handler->display->display_options['defaults']['title'] = FALSE;
$handler->display->display_options['defaults']['hide_admin_links'] = FALSE;
$handler->display->display_options['pager']['type'] = 'some';
$handler->display->display_options['defaults']['header'] = FALSE;
/* Header: Global: Text area */
$handler->display->display_options['header']['text']['id'] = 'area';
$handler->display->display_options['header']['text']['id'] = 'text';
$handler->display->display_options['header']['text']['table'] = 'views';
$handler->display->display_options['header']['text']['field'] = 'area';
$handler->display->display_options['header']['text']['content'] = 'Processed Feedback Messages';
$handler->display->display_options['header']['text']['empty'] = TRUE;
$handler->display->display_options['header']['text']['content'] = '<h3>Processed Feedback Messages</h3>';
$handler->display->display_options['header']['text']['format'] = 'full_html';
$handler->display->display_options['defaults']['empty'] = FALSE;
/* No results behavior: Global: Text area */
$handler->display->display_options['empty']['area']['id'] = 'area';
$handler->display->display_options['empty']['area']['table'] = 'views';
$handler->display->display_options['empty']['area']['field'] = 'area';
$handler->display->display_options['empty']['area']['empty'] = TRUE;
$handler->display->display_options['empty']['area']['content'] = 'There are no processed feedback entries.';
$handler->display->display_options['empty']['area']['format'] = 'filtered_html';
$handler->display->display_options['defaults']['filter_groups'] = FALSE;
$handler->display->display_options['defaults']['filters'] = FALSE;
/* Filter criterion: Feedback: Status */
@ -215,7 +235,8 @@ function feedback_views_default_views() {
t('next '),
t('last »'),
t('Open Feedback Messages'),
t('There are no feedback entries.'),
t('There are no processed feedback entries.'),
t('There are no open feedback entries.'),
t('User'),
t('Location'),
t('Date'),

0
views/feedback_handler_field_feedback_link.inc Normal file → Executable file
View File

View File

@ -0,0 +1,13 @@
<?php
/**
* Field handler to present a link to delete a feedback entry.
*/
class feedback_handler_field_feedback_link_delete extends feedback_handler_field_feedback_link {
function render_link($data, $values) {
$this->options['alter']['make_link'] = TRUE;
$this->options['alter']['path'] = "admin/reports/feedback/$data/delete";
$text = !empty($this->options['text']) ? $this->options['text'] : t('delete');
return $text;
}
}

View File

@ -0,0 +1,13 @@
<?php
/**
* Field handler to present a link to edit a feedback entry.
*/
class feedback_handler_field_feedback_link_edit extends feedback_handler_field_feedback_link {
function render_link($data, $values) {
$this->options['alter']['make_link'] = TRUE;
$this->options['alter']['path'] = "admin/reports/feedback/$data/edit";
$text = !empty($this->options['text']) ? $this->options['text'] : t('edit');
return $text;
}
}