diff --git a/js/messages.php b/js/messages.php index 2dafbea285..e1fb92038d 100644 --- a/js/messages.php +++ b/js/messages.php @@ -39,6 +39,8 @@ $js_messages['strDropTableStrongWarning'] = __('You are about to DESTROY a compl $js_messages['strTruncateTableStrongWarning'] = __('You are about to TRUNCATE a complete table!'); $js_messages['strDeleteTrackingData'] = __('Delete tracking data for this table?'); $js_messages['strDeleteTrackingDataMultiple'] = __('Delete tracking data for these tables?'); +$js_messages['strDeleteTrackingVersion'] = __('Delete tracking data for this version?'); +$js_messages['strDeleteTrackingVersionMultiple'] = __('Delete tracking data for these versions?'); $js_messages['strDeletingTrackingData'] = __('Deleting tracking data'); $js_messages['strDroppingPrimaryKeyIndex'] = __('Dropping Primary Key/Index'); $js_messages['strDroppingForeignKey'] = __('Dropping Foreign key.'); diff --git a/js/tbl_tracking.js b/js/tbl_tracking.js new file mode 100644 index 0000000000..5640e0b86d --- /dev/null +++ b/js/tbl_tracking.js @@ -0,0 +1,47 @@ +/** + * Unbind all event handlers before tearing down the page + */ +AJAX.registerTeardown('tbl_tracking.js', function () { + $('body').off('click', '#versionsForm.ajax button[name="submit_mult"], #versionsForm.ajax input[name="submit_mult"]'); + $('body').off('click', 'a.delete_version_anchor.ajax'); +}); + +/** + * Bind event handlers + */ +AJAX.registerOnload('tbl_tracking.js', function () { + + /** + * Handles multi submit for tracking versions + */ + $('body').on('click', '#versionsForm.ajax button[name="submit_mult"], #versionsForm.ajax input[name="submit_mult"]', function (e) { + e.preventDefault(); + var $button = $(this); + var $form = $button.parent('form'); + var submitData = $form.serialize() + '&ajax_request=true&ajax_page_request=true&submit_mult=' + $button.val(); + + if ($button.val() == 'delete_version') { + var question = PMA_messages.strDeleteTrackingVersionMultiple; + $button.PMA_confirm(question, $form.attr('action'), function (url) { + PMA_ajaxShowMessage(); + $.get(url, submitData, AJAX.responseHandler); + }); + } else { + PMA_ajaxShowMessage(); + $.get($form.attr('action'), submitData, AJAX.responseHandler); + } + }); + + /** + * Ajax Event handler for 'Delete version' + */ + $('body').on('click', 'a.delete_version_anchor.ajax', function (e) { + e.preventDefault(); + var $anchor = $(this); + var question = PMA_messages.strDeleteTrackingVersion; + $anchor.PMA_confirm(question, $anchor.attr('href'), function (url) { + PMA_ajaxShowMessage(); + $.get(url, {'ajax_page_request': true, 'ajax_request': true}, AJAX.responseHandler); + }); + }); +}); \ No newline at end of file diff --git a/libraries/Tracker.class.php b/libraries/Tracker.class.php index 0504400d77..b0a8744c31 100644 --- a/libraries/Tracker.class.php +++ b/libraries/Tracker.class.php @@ -347,16 +347,17 @@ class PMA_Tracker /** - * Removes all tracking data for a table + * Removes all tracking data for a table or a version of a table * * @param string $dbname name of database * @param string $tablename name of table + * @param string $version version * * @static * * @return int result of version insertion */ - static public function deleteTracking($dbname, $tablename) + static public function deleteTracking($dbname, $tablename, $version = '') { $sql_query = "/*NOTRACK*/\n" . "DELETE FROM " . self::$pma_table @@ -364,6 +365,10 @@ class PMA_Tracker . PMA_Util::sqlAddSlashes($dbname) . "'" . " AND `table_name` = '" . PMA_Util::sqlAddSlashes($tablename) . "'"; + if ($version) { + $sql_query .= " AND `version` = '" + . PMA_Util::sqlAddSlashes($version) . "'"; + } $result = PMA_queryAsControlUser($sql_query); return $result; diff --git a/libraries/tracking.lib.php b/libraries/tracking.lib.php index 5e9c28aa08..a9a7795428 100644 --- a/libraries/tracking.lib.php +++ b/libraries/tracking.lib.php @@ -221,26 +221,33 @@ function PMA_getListOfVersionsOfTable() /** * Function to get html for displaying last version number * - * @param array $sql_result sql result - * @param int $last_version last version - * @param array $url_params url parameters - * @param string $url_query url query + * @param array $sql_result sql result + * @param int $last_version last version + * @param array $url_params url parameters + * @param string $url_query url query + * @param string $pmaThemeImage path to theme's image folder + * @param string $text_dir text direction * * @return string */ -function PMA_getHtmlForTableVersionDetails($sql_result, $last_version, $url_params, - $url_query +function PMA_getHtmlForTableVersionDetails( + $sql_result, $last_version, $url_params, + $url_query, $pmaThemeImage, $text_dir ) { $tracking_active = false; - $html = '