Transformed values are returned from server for newly edited values. Handling of mimetypes other than text/plain needs to be implemented

This commit is contained in:
ninadsp
2010-07-29 23:36:35 +05:30
parent e8e87ae675
commit 43ed78a0f8
2 changed files with 57 additions and 1 deletions

View File

@@ -244,6 +244,8 @@ $(document).ready(function() {
// Collect values of all fields to submit, we don't know which changed // Collect values of all fields to submit, we don't know which changed
var params_to_submit = {}; var params_to_submit = {};
var relation_fields = new Array(); var relation_fields = new Array();
var transform_fields = {};
var transformation_fields = false;
$(input_siblings).each(function() { $(input_siblings).each(function() {
@@ -251,11 +253,20 @@ $(document).ready(function() {
var field_name = getFieldName($(this), disp_mode); var field_name = getFieldName($(this), disp_mode);
var this_field_params = {}; var this_field_params = {};
if($(this).is('.transformed')) {
transformation_fields = true;
}
if($(this).is(":not(.relation, .enum)")) { if($(this).is(":not(.relation, .enum)")) {
this_field_params[field_name] = $(this).find('textarea').val(); this_field_params[field_name] = $(this).find('textarea').val();
if($(this).is('.transformed')) {
$.extend(transform_fields, this_field_params);
}
} }
else { else {
this_field_params[field_name] = $(this).find('select').val(); this_field_params[field_name] = $(this).find('select').val();
if($(this).is('.relation')) { if($(this).is('.relation')) {
relation_fields.push(field_name); relation_fields.push(field_name);
} }
@@ -277,6 +288,7 @@ $(document).ready(function() {
if(relation_fields.length > 0) { if(relation_fields.length > 0) {
rel_fields_list = relation_fields.join(); rel_fields_list = relation_fields.join();
} }
var transform_fields_list = $.param(transform_fields);
// Make the Ajax post after setting all parameters // Make the Ajax post after setting all parameters
var post_params = {'ajax_request' : true, var post_params = {'ajax_request' : true,
@@ -288,6 +300,8 @@ $(document).ready(function() {
'clause_is_unique' : nonunique, 'clause_is_unique' : nonunique,
'where_clause' : where_clause, 'where_clause' : where_clause,
'rel_fields_list' : rel_fields_list, 'rel_fields_list' : rel_fields_list,
'do_transformations' : transformation_fields,
'transform_fields_list' : transform_fields_list,
'goto' : 'sql.php' 'goto' : 'sql.php'
}; };
@@ -300,6 +314,18 @@ $(document).ready(function() {
// Inline edit post has been successful. // Inline edit post has been successful.
if($(this).is(':not(.relation, .enum)')) { if($(this).is(':not(.relation, .enum)')) {
var new_html = $(this).find('textarea').val(); var new_html = $(this).find('textarea').val();
if($(this).is('.transformed')) {
var field_name = getFieldName($(this), disp_mode);
var this_field = $(this);
$.each(data.transformations, function(key, value) {
if(key == field_name) {
var new_value = $(this_field).find('textarea').val();
new_html = $(value).append(new_value);
}
})
}
} }
else { else {
var new_html = $(this).find('select').val(); var new_html = $(this).find('select').val();

32
sql.php
View File

@@ -593,7 +593,7 @@ if (0 == $num_rows || $is_affected) {
$map = PMA_getForeigners($db, $table, '', 'both'); $map = PMA_getForeigners($db, $table, '', 'both');
$rel_fields = explode(',', $rel_fields_list); $rel_fields = explode(',', $_REQUEST['rel_fields_list']);
foreach( $rel_fields as $rel_field) { foreach( $rel_fields as $rel_field) {
@@ -611,6 +611,36 @@ if (0 == $num_rows || $is_affected) {
$extra_data['relations'][$rel_field] .= '</a>'; $extra_data['relations'][$rel_field] .= '</a>';
} }
} }
if(isset($_REQUEST['do_transformations']) && $_REQUEST['do_transformations'] == true ) {
require_once './libraries/transformations.lib.php';
//if some posted fields need to be transformed, generate them here.
$mime_map = PMA_getMIME($db, $table);
$edited_values = array();
parse_str($_REQUEST['transform_fields_list'], $edited_values);
foreach($mime_map as $transformation) {
$include_file = $transformation['transformation'];
$column_name = $transformation['column_name'];
$column_data = $edited_values[$column_name];
if (file_exists('./libraries/transformations/' . $include_file)) {
$transformfunction_name = str_replace('.inc.php', '', $transformation['transformation']);
require_once './libraries/transformations/' . $include_file;
if (function_exists('PMA_transformation_' . $transformfunction_name)) {
$transform_function = 'PMA_transformation_' . $transformfunction_name;
$transform_options = PMA_transformation_getOptions((isset($transformation['transformation_options']) ? $transformation['transformation_options'] : ''));
//$meta->mimetype = str_replace('_', '/', $GLOBALS['mime_map'][$meta->name]['mimetype']);
}
}
$extra_data['transformations'][$column_name] = $transform_function($column_data, $transform_options);
}
}
$extra_data['sql_query'] = PMA_showMessage(NULL, $GLOBALS['display_query']); $extra_data['sql_query'] = PMA_showMessage(NULL, $GLOBALS['display_query']);
PMA_ajaxResponse($message, $message->isSuccess(), $extra_data); PMA_ajaxResponse($message, $message->isSuccess(), $extra_data);