diff --git a/js/functions.js b/js/functions.js index d09109f65..72abde46f 100644 --- a/js/functions.js +++ b/js/functions.js @@ -380,328 +380,6 @@ function checkSqlQuery(theForm) return true; } // end of the 'checkSqlQuery()' function -// Global variable row_class is set to even -var row_class = 'even'; - -/** -* Generates a row dynamically in the differences table displaying -* the complete statistics of difference in table like number of -* rows to be updated, number of rows to be inserted, number of -* columns to be added, number of columns to be removed, etc. -* -* @param index index of matching table -* @param update_size number of rows/column to be updated -* @param insert_size number of rows/coulmns to be inserted -* @param remove_size number of columns to be removed -* @param insert_index number of indexes to be inserted -* @param remove_index number of indexes to be removed -* @param img_obj image object -* @param table_name name of the table -*/ - -function showDetails(i, update_size, insert_size, remove_size, insert_index, remove_index, img_obj, table_name) -{ - // The path of the image is split to facilitate comparison - var relative_path = (img_obj.src).split("themes/"); - - // The image source is changed when the showDetails function is called. - if (relative_path[1] == 'original/img/new_data_hovered.jpg') { - img_obj.src = "./themes/original/img/new_data_selected_hovered.jpg"; - img_obj.alt = PMA_messages['strClickToUnselect']; //only for IE browser - } else if (relative_path[1] == 'original/img/new_struct_hovered.jpg') { - img_obj.src = "./themes/original/img/new_struct_selected_hovered.jpg"; - img_obj.alt = PMA_messages['strClickToUnselect']; - } else if (relative_path[1] == 'original/img/new_struct_selected_hovered.jpg') { - img_obj.src = "./themes/original/img/new_struct_hovered.jpg"; - img_obj.alt = PMA_messages['strClickToSelect']; - } else if (relative_path[1] == 'original/img/new_data_selected_hovered.jpg') { - img_obj.src = "./themes/original/img/new_data_hovered.jpg"; - img_obj.alt = PMA_messages['strClickToSelect']; - } - - var div = document.getElementById("list"); - var table = div.getElementsByTagName("table")[0]; - var table_body = table.getElementsByTagName("tbody")[0]; - - //Global variable row_class is being used - if (row_class == 'even') { - row_class = 'odd'; - } else { - row_class = 'even'; - } - // If the red or green button against a table name is pressed then append a new row to show the details of differences of this table. - if ((relative_path[1] != 'original/img/new_struct_selected_hovered.jpg') && (relative_path[1] != 'original/img/new_data_selected_hovered.jpg')) { - - var newRow = document.createElement("tr"); - newRow.setAttribute("class", row_class); - newRow.className = row_class; - // Id assigned to this row element is same as the index of this table name in the matching_tables/source_tables_uncommon array - newRow.setAttribute("id" , i); - - var table_name_cell = document.createElement("td"); - table_name_cell.align = "center"; - table_name_cell.innerHTML = table_name ; - - newRow.appendChild(table_name_cell); - - var create_table = document.createElement("td"); - create_table.align = "center"; - - var add_cols = document.createElement("td"); - add_cols.align = "center"; - - var remove_cols = document.createElement("td"); - remove_cols.align = "center"; - - var alter_cols = document.createElement("td"); - alter_cols.align = "center"; - - var add_index = document.createElement("td"); - add_index.align = "center"; - - var delete_index = document.createElement("td"); - delete_index.align = "center"; - - var update_rows = document.createElement("td"); - update_rows.align = "center"; - - var insert_rows = document.createElement("td"); - insert_rows.align = "center"; - - var tick_image = document.createElement("img"); - tick_image.src = "./themes/original/img/s_success.png"; - - if (update_size == '' && insert_size == '' && remove_size == '') { - /** - This is the case when the table needs to be created in target database. - */ - create_table.appendChild(tick_image); - add_cols.innerHTML = "--"; - remove_cols.innerHTML = "--"; - alter_cols.innerHTML = "--"; - delete_index.innerHTML = "--"; - add_index.innerHTML = "--"; - update_rows.innerHTML = "--"; - insert_rows.innerHTML = "--"; - - newRow.appendChild(create_table); - newRow.appendChild(add_cols); - newRow.appendChild(remove_cols); - newRow.appendChild(alter_cols); - newRow.appendChild(delete_index); - newRow.appendChild(add_index); - newRow.appendChild(update_rows); - newRow.appendChild(insert_rows); - - } else if (update_size == '' && remove_size == '') { - /** - This is the case when data difference is displayed in the - table which is present in source but absent from target database - */ - create_table.innerHTML = "--"; - add_cols.innerHTML = "--"; - remove_cols.innerHTML = "--"; - alter_cols.innerHTML = "--"; - add_index.innerHTML = "--"; - delete_index.innerHTML = "--"; - update_rows.innerHTML = "--"; - insert_rows.innerHTML = insert_size; - - newRow.appendChild(create_table); - newRow.appendChild(add_cols); - newRow.appendChild(remove_cols); - newRow.appendChild(alter_cols); - newRow.appendChild(delete_index); - newRow.appendChild(add_index); - newRow.appendChild(update_rows); - newRow.appendChild(insert_rows); - - } else if (remove_size == '') { - /** - This is the case when data difference between matching_tables is displayed. - */ - create_table.innerHTML = "--"; - add_cols.innerHTML = "--"; - remove_cols.innerHTML = "--"; - alter_cols.innerHTML = "--"; - add_index.innerHTML = "--"; - delete_index.innerHTML = "--"; - update_rows.innerHTML = update_size; - insert_rows.innerHTML = insert_size; - - newRow.appendChild(create_table); - newRow.appendChild(add_cols); - newRow.appendChild(remove_cols); - newRow.appendChild(alter_cols); - newRow.appendChild(delete_index); - newRow.appendChild(add_index); - newRow.appendChild(update_rows); - newRow.appendChild(insert_rows); - - } else { - /** - This is the case when structure difference between matching_tables id displayed - */ - create_table.innerHTML = "--"; - add_cols.innerHTML = insert_size; - remove_cols.innerHTML = remove_size; - alter_cols.innerHTML = update_size; - delete_index.innerHTML = remove_index; - add_index.innerHTML = insert_index; - update_rows.innerHTML = "--"; - insert_rows.innerHTML = "--"; - - newRow.appendChild(create_table); - newRow.appendChild(add_cols); - newRow.appendChild(remove_cols); - newRow.appendChild(alter_cols); - newRow.appendChild(delete_index); - newRow.appendChild(add_index); - newRow.appendChild(update_rows); - newRow.appendChild(insert_rows); - } - table_body.appendChild(newRow); - - } else if ((relative_path[1] != 'original/img/new_struct_hovered.jpg') && (relative_path[1] != 'original/img/new_data_hovered.jpg')) { - //The case when the row showing the details need to be removed from the table i.e. the difference button is deselected now. - var table_rows = table_body.getElementsByTagName("tr"); - var j; - var index = 0; - for (j=0; j < table_rows.length; j++) - { - if (table_rows[j].id == i) { - index = j; - table_rows[j].parentNode.removeChild(table_rows[j]); - } - } - //The table row css is being adjusted. Class "odd" for odd rows and "even" for even rows should be maintained. - for(index = 0; index < table_rows.length; index++) - { - row_class_element = table_rows[index].getAttribute('class'); - if (row_class_element == "even") { - table_rows[index].setAttribute("class","odd"); // for Mozilla firefox - table_rows[index].className = "odd"; // for IE browser - } else { - table_rows[index].setAttribute("class","even"); // for Mozilla firefox - table_rows[index].className = "even"; // for IE browser - } - } - } -} - -/** - * Changes the image on hover effects - * - * @param img_obj the image object whose source needs to be changed - * - */ -function change_Image(img_obj) -{ - var relative_path = (img_obj.src).split("themes/"); - - if (relative_path[1] == 'original/img/new_data.jpg') { - img_obj.src = "./themes/original/img/new_data_hovered.jpg"; - } else if (relative_path[1] == 'original/img/new_struct.jpg') { - img_obj.src = "./themes/original/img/new_struct_hovered.jpg"; - } else if (relative_path[1] == 'original/img/new_struct_hovered.jpg') { - img_obj.src = "./themes/original/img/new_struct.jpg"; - } else if (relative_path[1] == 'original/img/new_data_hovered.jpg') { - img_obj.src = "./themes/original/img/new_data.jpg"; - } else if (relative_path[1] == 'original/img/new_data_selected.jpg') { - img_obj.src = "./themes/original/img/new_data_selected_hovered.jpg"; - } else if(relative_path[1] == 'original/img/new_struct_selected.jpg') { - img_obj.src = "./themes/original/img/new_struct_selected_hovered.jpg"; - } else if (relative_path[1] == 'original/img/new_struct_selected_hovered.jpg') { - img_obj.src = "./themes/original/img/new_struct_selected.jpg"; - } else if (relative_path[1] == 'original/img/new_data_selected_hovered.jpg') { - img_obj.src = "./themes/original/img/new_data_selected.jpg"; - } -} - -/** - * Generates the URL containing the list of selected table ids for synchronization and - * a variable checked for confirmation of deleting previous rows from target tables - * - * @param token the token generated for each PMA form - * - */ -function ApplySelectedChanges(token) -{ - var div = document.getElementById("list"); - var table = div.getElementsByTagName('table')[0]; - var table_body = table.getElementsByTagName('tbody')[0]; - // Get all the rows from the details table - var table_rows = table_body.getElementsByTagName('tr'); - var x = table_rows.length; - var i; - /** - Append the token at the beginning of the query string followed by - Table_ids that shows that "Apply Selected Changes" button is pressed - */ - var append_string = "?token="+token+"&Table_ids="+1; - for(i=0; i $js_message) { /* Calendar */ echo "var themeCalendarImage = '" . $GLOBALS['pmaThemeImage'] . 'b_calendar.png' . "';\n"; +/* Image path */ +echo "var pmaThemeImage = '" . $GLOBALS['pmaThemeImage'] . "';\n"; + /* Version */ echo "var pmaversion = '" . PMA_VERSION . "';\n"; diff --git a/js/server_synchronize.js b/js/server_synchronize.js index b360d1564..e327a7b40 100644 --- a/js/server_synchronize.js +++ b/js/server_synchronize.js @@ -3,6 +3,303 @@ * for server_synchronize.php * */ + +// Global variable row_class is set to even +var row_class = 'even'; + +/** +* Generates a row dynamically in the differences table displaying +* the complete statistics of difference in table like number of +* rows to be updated, number of rows to be inserted, number of +* columns to be added, number of columns to be removed, etc. +* +* @param index index of matching table +* @param update_size number of rows/column to be updated +* @param insert_size number of rows/coulmns to be inserted +* @param remove_size number of columns to be removed +* @param insert_index number of indexes to be inserted +* @param remove_index number of indexes to be removed +* @param img_obj image object +* @param table_name name of the table +*/ + +function showDetails(i, update_size, insert_size, remove_size, insert_index, remove_index, img_obj, table_name) +{ + // a jQuery object + var $img = $(img_obj); + + $img.toggleClass('selected'); + + // The image source is changed when the showDetails function is called. + if ($img.hasClass('selected')) { + if ($img.hasClass('struct_img')) { + $img.attr('src', pmaThemeImage + 'new_struct_selected.jpg'); + } + if ($img.hasClass('data_img')) { + $img.attr('src', pmaThemeImage + 'new_data_selected.jpg'); + } + } else { + if ($img.hasClass('struct_img')) { + $img.attr('src', pmaThemeImage + 'new_struct.jpg'); + } + if ($img.hasClass('data_img')) { + $img.attr('src', pmaThemeImage + 'new_data.jpg'); + } + } + + var div = document.getElementById("list"); + var table = div.getElementsByTagName("table")[0]; + var table_body = table.getElementsByTagName("tbody")[0]; + + //Global variable row_class is being used + if (row_class == 'even') { + row_class = 'odd'; + } else { + row_class = 'even'; + } + // If the red or green button against a table name is pressed then append a new row to show the details of differences of this table. + if ($img.hasClass('selected')) { + var newRow = document.createElement("tr"); + newRow.setAttribute("class", row_class); + newRow.className = row_class; + // Id assigned to this row element is same as the index of this table name in the matching_tables/source_tables_uncommon array + newRow.setAttribute("id" , i); + + var table_name_cell = document.createElement("td"); + table_name_cell.align = "center"; + table_name_cell.innerHTML = table_name ; + + newRow.appendChild(table_name_cell); + + var create_table = document.createElement("td"); + create_table.align = "center"; + + var add_cols = document.createElement("td"); + add_cols.align = "center"; + + var remove_cols = document.createElement("td"); + remove_cols.align = "center"; + + var alter_cols = document.createElement("td"); + alter_cols.align = "center"; + + var add_index = document.createElement("td"); + add_index.align = "center"; + + var delete_index = document.createElement("td"); + delete_index.align = "center"; + + var update_rows = document.createElement("td"); + update_rows.align = "center"; + + var insert_rows = document.createElement("td"); + insert_rows.align = "center"; + + var tick_image = document.createElement("img"); + tick_image.src = pmaThemeImage + "s_success.png"; + + if (update_size == '' && insert_size == '' && remove_size == '') { + /** + This is the case when the table needs to be created in target database. + */ + create_table.appendChild(tick_image); + add_cols.innerHTML = "--"; + remove_cols.innerHTML = "--"; + alter_cols.innerHTML = "--"; + delete_index.innerHTML = "--"; + add_index.innerHTML = "--"; + update_rows.innerHTML = "--"; + insert_rows.innerHTML = "--"; + + newRow.appendChild(create_table); + newRow.appendChild(add_cols); + newRow.appendChild(remove_cols); + newRow.appendChild(alter_cols); + newRow.appendChild(delete_index); + newRow.appendChild(add_index); + newRow.appendChild(update_rows); + newRow.appendChild(insert_rows); + + } else if (update_size == '' && remove_size == '') { + /** + This is the case when data difference is displayed in the + table which is present in source but absent from target database + */ + create_table.innerHTML = "--"; + add_cols.innerHTML = "--"; + remove_cols.innerHTML = "--"; + alter_cols.innerHTML = "--"; + add_index.innerHTML = "--"; + delete_index.innerHTML = "--"; + update_rows.innerHTML = "--"; + insert_rows.innerHTML = insert_size; + + newRow.appendChild(create_table); + newRow.appendChild(add_cols); + newRow.appendChild(remove_cols); + newRow.appendChild(alter_cols); + newRow.appendChild(delete_index); + newRow.appendChild(add_index); + newRow.appendChild(update_rows); + newRow.appendChild(insert_rows); + + } else if (remove_size == '') { + /** + This is the case when data difference between matching_tables is displayed. + */ + create_table.innerHTML = "--"; + add_cols.innerHTML = "--"; + remove_cols.innerHTML = "--"; + alter_cols.innerHTML = "--"; + add_index.innerHTML = "--"; + delete_index.innerHTML = "--"; + update_rows.innerHTML = update_size; + insert_rows.innerHTML = insert_size; + + newRow.appendChild(create_table); + newRow.appendChild(add_cols); + newRow.appendChild(remove_cols); + newRow.appendChild(alter_cols); + newRow.appendChild(delete_index); + newRow.appendChild(add_index); + newRow.appendChild(update_rows); + newRow.appendChild(insert_rows); + + } else { + /** + This is the case when structure difference between matching_tables id displayed + */ + create_table.innerHTML = "--"; + add_cols.innerHTML = insert_size; + remove_cols.innerHTML = remove_size; + alter_cols.innerHTML = update_size; + delete_index.innerHTML = remove_index; + add_index.innerHTML = insert_index; + update_rows.innerHTML = "--"; + insert_rows.innerHTML = "--"; + + newRow.appendChild(create_table); + newRow.appendChild(add_cols); + newRow.appendChild(remove_cols); + newRow.appendChild(alter_cols); + newRow.appendChild(delete_index); + newRow.appendChild(add_index); + newRow.appendChild(update_rows); + newRow.appendChild(insert_rows); + } + table_body.appendChild(newRow); + + } else { + //The case when the row showing the details need to be removed from the table i.e. the difference button is deselected now. + var table_rows = table_body.getElementsByTagName("tr"); + var j; + var index = 0; + for (j=0; j < table_rows.length; j++) + { + if (table_rows[j].id == i) { + index = j; + table_rows[j].parentNode.removeChild(table_rows[j]); + } + } + //The table row css is being adjusted. Class "odd" for odd rows and "even" for even rows should be maintained. + for(index = 0; index < table_rows.length; index++) + { + row_class_element = table_rows[index].getAttribute('class'); + if (row_class_element == "even") { + table_rows[index].setAttribute("class","odd"); // for Mozilla firefox + table_rows[index].className = "odd"; // for IE browser + } else { + table_rows[index].setAttribute("class","even"); // for Mozilla firefox + table_rows[index].className = "even"; // for IE browser + } + } + } +} + +/** + * Generates the URL containing the list of selected table ids for synchronization and + * a variable checked for confirmation of deleting previous rows from target tables + * + * @param token the token generated for each PMA form + * + */ +function ApplySelectedChanges(token) +{ + var div = document.getElementById("list"); + var table = div.getElementsByTagName('table')[0]; + var table_body = table.getElementsByTagName('tbody')[0]; + // Get all the rows from the details table + var table_rows = table_body.getElementsByTagName('tr'); + var x = table_rows.length; + var i; + /** + Append the token at the beginning of the query string followed by + Table_ids that shows that "Apply Selected Changes" button is pressed + */ + var append_string = "?token="+token+"&Table_ids="+1; + for(i=0; i 0) || ($num_insert_cols > 0) || ($num_remove_cols > 0) || ($num_add_index > 0) || ($num_remove_index > 0)) { - echo '' . __('Click to select') . ''; @@ -351,8 +352,8 @@ if ((isset($_REQUEST['submit_connect']))) { if (isset($update_array[$i]) || isset($insert_array[$i])) { if (isset($update_array[$i][0][$matching_tables_keys[$i][0]]) || isset($insert_array[$i][0][$matching_tables_keys[$i][0]])) { - echo '' . __('Click to select') . ''; } @@ -367,15 +368,15 @@ if ((isset($_REQUEST['submit_connect']))) { $odd_row = PMA_syncDisplayBeginTableRow($odd_row); echo ' + ' . htmlspecialchars($source_tables_uncommon[$j]) . ' '; - echo '' . __('Click to select') . '' . __('Click to select') . ''; if ($row_count[$j] > 0) { - echo '' . __('Click to select') . ''; } @@ -733,8 +734,8 @@ if (isset($_REQUEST['Table_ids'])) { } if (($num_alter_cols > 0) || ($num_insert_cols > 0) || ($num_remove_cols > 0) || ($num_add_index > 0) || ($num_remove_index > 0)) { - echo '' . __('Click to select') . ''; } @@ -761,8 +762,8 @@ if (isset($_REQUEST['Table_ids'])) { if ((isset($matching_tables_keys[$i][0]) && isset($update_array[$i][0][$matching_tables_keys[$i][0]])) || (isset($matching_tables_keys[$i][0]) && isset($insert_array[$i][0][$matching_tables_keys[$i][0]]))) { - echo '' . __('Click to select') . ''; } @@ -789,8 +790,8 @@ if (isset($_REQUEST['Table_ids'])) { */ if (!(in_array($j, $uncommon_table_structure_diff))) { if (isset($uncommon_tables[$j])) { - echo '' . __('Click to select') . '' .' '; } } else { @@ -801,8 +802,8 @@ if (isset($_REQUEST['Table_ids'])) { */ if (!(in_array($j, $uncommon_table_data_diff))) { if (isset($row_count[$j]) && ($row_count > 0)) { - echo '' . __('Click to select') . ''; }