From c660c627f0b8dc069bde459c4eefed3dbcef3904 Mon Sep 17 00:00:00 2001 From: Pavel Rochnyack Date: Sun, 14 Aug 2016 15:53:58 +0100 Subject: [PATCH] When editing table records, display readonly inputs for fields without write access . Signed-off-by: Pavel Rochnyack --- libraries/insert_edit.lib.php | 133 +++++++++++++++++------- test/libraries/PMA_insert_edit_test.php | 103 +++++++++++------- 2 files changed, 162 insertions(+), 74 deletions(-) diff --git a/libraries/insert_edit.lib.php b/libraries/insert_edit.lib.php index fceca5b184..c9a538bb49 100644 --- a/libraries/insert_edit.lib.php +++ b/libraries/insert_edit.lib.php @@ -379,12 +379,13 @@ function PMA_getEnumSetAndTimestampColumns($column, $timestamp_seen) * @param integer $tabindex tab index * @param integer $idindex id index * @param boolean $insert_mode insert mode or edit mode + * @param boolean $readOnly is column read only or not * * @return string an html snippet */ function PMA_getFunctionColumn($column, $is_upload, $column_name_appendix, $onChangeClause, $no_support_types, $tabindex_for_function, - $tabindex, $idindex, $insert_mode + $tabindex, $idindex, $insert_mode, $readOnly ) { $html_output = ''; if (($GLOBALS['cfg']['ProtectBinary'] === 'blob' @@ -395,7 +396,8 @@ function PMA_getFunctionColumn($column, $is_upload, $column_name_appendix, && $column['is_binary']) ) { $html_output .= '' . __('Binary') . '' . "\n"; - } elseif (mb_strstr($column['True_Type'], 'enum') + } elseif ($readOnly + || mb_strstr($column['True_Type'], 'enum') || mb_strstr($column['True_Type'], 'set') || in_array($column['pma_type'], $no_support_types) ) { @@ -430,13 +432,15 @@ function PMA_getFunctionColumn($column, $is_upload, $column_name_appendix, * @param string $vkey [multi_edit]['row_id'] * @param array $foreigners keys into foreign fields * @param array $foreignData data about the foreign keys + * @param boolean $readOnly is column read only or not * * @return string an html snippet */ function PMA_getNullColumn($column, $column_name_appendix, $real_null_value, - $tabindex, $tabindex_for_null, $idindex, $vkey, $foreigners, $foreignData + $tabindex, $tabindex_for_null, $idindex, $vkey, $foreigners, $foreignData, + $readOnly ) { - if ($column['Null'] != 'YES') { + if ($column['Null'] != 'YES' || $readOnly) { return "\n"; } $html_output = ''; @@ -544,6 +548,7 @@ function PMA_getNullifyCodeForNullColumn($column, $foreigners, $foreignData) * @param array $extracted_columnspec associative array containing type, * spec_in_brackets and possibly * enum_set_values (another array) + * @param boolean $readOnly is column read only or not * * @return string an html snippet */ @@ -552,7 +557,8 @@ function PMA_getValueColumn($column, $backup_field, $column_name_appendix, $special_chars, $foreignData, $odd_row, $paramTableDbArray, $rownumber, $titles, $text_dir, $special_chars_encoded, $vkey, $is_upload, $biggest_max_file_size, - $default_char_editing, $no_support_types, $gis_data_types, $extracted_columnspec + $default_char_editing, $no_support_types, $gis_data_types, $extracted_columnspec, + $readOnly ) { // HTML5 data-* attribute data-type $data_type = $GLOBALS['PMA_Types']->getTypeClass($column['True_Type']); @@ -562,14 +568,14 @@ function PMA_getValueColumn($column, $backup_field, $column_name_appendix, $html_output .= PMA_getForeignLink( $column, $backup_field, $column_name_appendix, $onChangeClause, $tabindex, $tabindex_for_value, $idindex, $data, - $paramTableDbArray, $rownumber, $titles + $paramTableDbArray, $rownumber, $titles, $readOnly ); } elseif (is_array($foreignData['disp_row'])) { $html_output .= PMA_dispRowForeignData( $backup_field, $column_name_appendix, $onChangeClause, $tabindex, $tabindex_for_value, - $idindex, $data, $foreignData + $idindex, $data, $foreignData, $readOnly ); } elseif ($GLOBALS['cfg']['LongtextDoubleTextarea'] @@ -582,7 +588,7 @@ function PMA_getValueColumn($column, $backup_field, $column_name_appendix, $html_output .= PMA_getTextarea( $column, $backup_field, $column_name_appendix, $onChangeClause, $tabindex, $tabindex_for_value, $idindex, $text_dir, - $special_chars_encoded, $data_type + $special_chars_encoded, $data_type, $readOnly ); } elseif (mb_strstr($column['pma_type'], 'text')) { @@ -590,7 +596,7 @@ function PMA_getValueColumn($column, $backup_field, $column_name_appendix, $html_output .= PMA_getTextarea( $column, $backup_field, $column_name_appendix, $onChangeClause, $tabindex, $tabindex_for_value, $idindex, $text_dir, - $special_chars_encoded, $data_type + $special_chars_encoded, $data_type, $readOnly ); $html_output .= "\n"; if (mb_strlen($special_chars) > 32000) { @@ -603,14 +609,15 @@ function PMA_getValueColumn($column, $backup_field, $column_name_appendix, } elseif ($column['pma_type'] == 'enum') { $html_output .= PMA_getPmaTypeEnum( $column, $backup_field, $column_name_appendix, $extracted_columnspec, - $onChangeClause, $tabindex, $tabindex_for_value, $idindex, $data + $onChangeClause, $tabindex, $tabindex_for_value, $idindex, $data, + $readOnly ); } elseif ($column['pma_type'] == 'set') { $html_output .= PMA_getPmaTypeSet( $column, $extracted_columnspec, $backup_field, $column_name_appendix, $onChangeClause, $tabindex, - $tabindex_for_value, $idindex, $data + $tabindex_for_value, $idindex, $data, $readOnly ); } elseif ($column['is_binary'] || $column['is_blob']) { @@ -618,7 +625,7 @@ function PMA_getValueColumn($column, $backup_field, $column_name_appendix, $column, $data, $special_chars, $biggest_max_file_size, $backup_field, $column_name_appendix, $onChangeClause, $tabindex, $tabindex_for_value, $idindex, $text_dir, $special_chars_encoded, - $vkey, $is_upload + $vkey, $is_upload, $readOnly ); } elseif (! in_array($column['pma_type'], $no_support_types)) { @@ -626,7 +633,7 @@ function PMA_getValueColumn($column, $backup_field, $column_name_appendix, $column, $default_char_editing, $backup_field, $column_name_appendix, $onChangeClause, $tabindex, $special_chars, $tabindex_for_value, $idindex, $text_dir, $special_chars_encoded, - $data, $extracted_columnspec + $data, $extracted_columnspec, $readOnly ); } @@ -653,12 +660,13 @@ function PMA_getValueColumn($column, $backup_field, $column_name_appendix, * @param array $titles An HTML IMG tag for a particular icon from * a theme, which may be an actual file or * an icon from a sprite + * @param boolean $readOnly is column read only or not * * @return string an html snippet */ function PMA_getForeignLink($column, $backup_field, $column_name_appendix, $onChangeClause, $tabindex, $tabindex_for_value, $idindex, $data, - $paramTableDbArray, $rownumber, $titles + $paramTableDbArray, $rownumber, $titles, $readOnly ) { list($table, $db) = $paramTableDbArray; $html_output = ''; @@ -670,6 +678,7 @@ function PMA_getForeignLink($column, $backup_field, $column_name_appendix, $html_output .= ''; @@ -699,12 +708,13 @@ function PMA_getForeignLink($column, $backup_field, $column_name_appendix, * @param integer $idindex id index * @param string $data data to edit * @param array $foreignData data about the foreign keys + * @param boolean $readOnly is display read only or not * * @return string an html snippet */ function PMA_dispRowForeignData($backup_field, $column_name_appendix, $onChangeClause, $tabindex, $tabindex_for_value, $idindex, $data, - $foreignData + $foreignData, $readOnly ) { $html_output = ''; $html_output .= $backup_field . "\n"; @@ -715,6 +725,7 @@ function PMA_dispRowForeignData($backup_field, $column_name_appendix, $html_output .= ''; + //Add hidden input, as disabled '; + } + return $html_output; } @@ -741,12 +758,13 @@ function PMA_dispRowForeignData($backup_field, $column_name_appendix, * @param string $special_chars_encoded replaced char if the string starts * with a \r\n pair (0x0d0a) add an extra \n * @param string $data_type the html5 data-* attribute type + * @param boolean $readOnly is column read only or not * * @return string an html snippet */ function PMA_getTextarea($column, $backup_field, $column_name_appendix, $onChangeClause, $tabindex, $tabindex_for_value, $idindex, - $text_dir, $special_chars_encoded, $data_type + $text_dir, $special_chars_encoded, $data_type, $readOnly ) { $the_class = ''; $textAreaRows = $GLOBALS['cfg']['TextareaRows']; @@ -773,6 +791,7 @@ function PMA_getTextarea($column, $backup_field, $column_name_appendix, $html_output = $backup_field . "\n" . '