Merge remote-tracking branch 'origin/master'
This commit is contained in:
322
js/functions.js
322
js/functions.js
@@ -380,328 +380,6 @@ function checkSqlQuery(theForm)
|
|||||||
return true;
|
return true;
|
||||||
} // end of the 'checkSqlQuery()' function
|
} // 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<x; i++){
|
|
||||||
append_string += "&";
|
|
||||||
append_string += i+"="+table_rows[i].id;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Getting the value of checkbox delete_rows
|
|
||||||
var checkbox = document.getElementById("delete_rows");
|
|
||||||
if (checkbox.checked){
|
|
||||||
append_string += "&checked=true";
|
|
||||||
} else {
|
|
||||||
append_string += "&checked=false";
|
|
||||||
}
|
|
||||||
//Appending the token and list of table ids in the URL
|
|
||||||
location.href += token;
|
|
||||||
location.href += append_string;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Displays an error message if any text field
|
|
||||||
* is left empty other than the port field.
|
|
||||||
*
|
|
||||||
* @param string the form name
|
|
||||||
* @param object the form
|
|
||||||
*
|
|
||||||
* @return boolean whether the form field is empty or not
|
|
||||||
*/
|
|
||||||
function validateConnection(form_name, form_obj)
|
|
||||||
{
|
|
||||||
var check = true;
|
|
||||||
var src_hostfilled = true;
|
|
||||||
var trg_hostfilled = true;
|
|
||||||
|
|
||||||
for (var i=1; i<form_name.elements.length; i++)
|
|
||||||
{
|
|
||||||
// All the text fields are checked excluding the port field because the default port can be used.
|
|
||||||
if ((form_name.elements[i].type == 'text') && (form_name.elements[i].name != 'src_port') && (form_name.elements[i].name != 'trg_port')) {
|
|
||||||
check = emptyFormElements(form_obj, form_name.elements[i].name);
|
|
||||||
if (check==false) {
|
|
||||||
element = form_name.elements[i].name;
|
|
||||||
if (form_name.elements[i].name == 'src_host') {
|
|
||||||
src_hostfilled = false;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (form_name.elements[i].name == 'trg_host') {
|
|
||||||
trg_hostfilled = false;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if ((form_name.elements[i].name == 'src_socket' && src_hostfilled==false) || (form_name.elements[i].name == 'trg_socket' && trg_hostfilled==false))
|
|
||||||
break;
|
|
||||||
else
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!check) {
|
|
||||||
form_obj.reset();
|
|
||||||
element.select();
|
|
||||||
alert(PMA_messages['strFormEmpty']);
|
|
||||||
element.focus();
|
|
||||||
}
|
|
||||||
return check;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if a form's element is empty.
|
* Check if a form's element is empty.
|
||||||
* An element containing only spaces is also considered empty
|
* An element containing only spaces is also considered empty
|
||||||
|
@@ -126,6 +126,9 @@ foreach ($js_messages as $name => $js_message) {
|
|||||||
/* Calendar */
|
/* Calendar */
|
||||||
echo "var themeCalendarImage = '" . $GLOBALS['pmaThemeImage'] . 'b_calendar.png' . "';\n";
|
echo "var themeCalendarImage = '" . $GLOBALS['pmaThemeImage'] . 'b_calendar.png' . "';\n";
|
||||||
|
|
||||||
|
/* Image path */
|
||||||
|
echo "var pmaThemeImage = '" . $GLOBALS['pmaThemeImage'] . "';\n";
|
||||||
|
|
||||||
/* Version */
|
/* Version */
|
||||||
echo "var pmaversion = '" . PMA_VERSION . "';\n";
|
echo "var pmaversion = '" . PMA_VERSION . "';\n";
|
||||||
|
|
||||||
|
@@ -3,6 +3,303 @@
|
|||||||
* for server_synchronize.php
|
* 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<x; i++){
|
||||||
|
append_string += "&";
|
||||||
|
append_string += i+"="+table_rows[i].id;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getting the value of checkbox delete_rows
|
||||||
|
var checkbox = document.getElementById("delete_rows");
|
||||||
|
if (checkbox.checked){
|
||||||
|
append_string += "&checked=true";
|
||||||
|
} else {
|
||||||
|
append_string += "&checked=false";
|
||||||
|
}
|
||||||
|
//Appending the token and list of table ids in the URL
|
||||||
|
location.href += token;
|
||||||
|
location.href += append_string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays an error message if any text field
|
||||||
|
* is left empty other than the port field.
|
||||||
|
*
|
||||||
|
* @param string the form name
|
||||||
|
* @param object the form
|
||||||
|
*
|
||||||
|
* @return boolean whether the form field is empty or not
|
||||||
|
*/
|
||||||
|
function validateConnection(form_name, form_obj)
|
||||||
|
{
|
||||||
|
var check = true;
|
||||||
|
var src_hostfilled = true;
|
||||||
|
var trg_hostfilled = true;
|
||||||
|
|
||||||
|
for (var i=1; i<form_name.elements.length; i++)
|
||||||
|
{
|
||||||
|
// All the text fields are checked excluding the port field because the default port can be used.
|
||||||
|
if ((form_name.elements[i].type == 'text') && (form_name.elements[i].name != 'src_port') && (form_name.elements[i].name != 'trg_port')) {
|
||||||
|
check = emptyFormElements(form_obj, form_name.elements[i].name);
|
||||||
|
if (check==false) {
|
||||||
|
element = form_name.elements[i].name;
|
||||||
|
if (form_name.elements[i].name == 'src_host') {
|
||||||
|
src_hostfilled = false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (form_name.elements[i].name == 'trg_host') {
|
||||||
|
trg_hostfilled = false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if ((form_name.elements[i].name == 'src_socket' && src_hostfilled==false) || (form_name.elements[i].name == 'trg_socket' && trg_hostfilled==false))
|
||||||
|
break;
|
||||||
|
else
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!check) {
|
||||||
|
form_obj.reset();
|
||||||
|
element.select();
|
||||||
|
alert(PMA_messages['strFormEmpty']);
|
||||||
|
element.focus();
|
||||||
|
}
|
||||||
|
return check;
|
||||||
|
}
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
$('.server_selector').change(function(evt) {
|
$('.server_selector').change(function(evt) {
|
||||||
var server = $(evt.target).val();
|
var server = $(evt.target).val();
|
||||||
@@ -24,4 +321,52 @@ $(document).ready(function() {
|
|||||||
$(this).closest('tbody').find('.server-db').val(parts[4])
|
$(this).closest('tbody').find('.server-db').val(parts[4])
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('.struct_img').hover(
|
||||||
|
// pmaThemeImage comes from js/messages.php
|
||||||
|
function() {
|
||||||
|
// mouse enters the element
|
||||||
|
var $img = $(this);
|
||||||
|
$img.addClass('hover');
|
||||||
|
if ($img.hasClass('selected')) {
|
||||||
|
$img.attr('src', pmaThemeImage + 'new_struct_selected_hovered.jpg');
|
||||||
|
} else {
|
||||||
|
$img.attr('src', pmaThemeImage + 'new_struct_hovered.jpg');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
function() {
|
||||||
|
// mouse leaves the element
|
||||||
|
var $img = $(this);
|
||||||
|
$img.removeClass('hover');
|
||||||
|
if ($img.hasClass('selected')) {
|
||||||
|
$img.attr('src', pmaThemeImage + 'new_struct_selected.jpg');
|
||||||
|
} else {
|
||||||
|
$img.attr('src', pmaThemeImage + 'new_struct.jpg');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
$('.data_img').hover(
|
||||||
|
function() {
|
||||||
|
// mouse enters the element
|
||||||
|
var $img = $(this);
|
||||||
|
$img.addClass('hover');
|
||||||
|
if ($img.hasClass('selected')) {
|
||||||
|
$img.attr('src', pmaThemeImage + 'new_data_selected_hovered.jpg');
|
||||||
|
} else {
|
||||||
|
$img.attr('src', pmaThemeImage + 'new_data_hovered.jpg');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
function() {
|
||||||
|
// mouse leaves the element
|
||||||
|
var $img = $(this);
|
||||||
|
$img.removeClass('hover');
|
||||||
|
if ($img.hasClass('selected')) {
|
||||||
|
$img.attr('src', pmaThemeImage + 'new_data_selected.jpg');
|
||||||
|
} else {
|
||||||
|
$img.attr('src', pmaThemeImage + 'new_data.jpg');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@@ -277,6 +277,7 @@ if ((isset($_REQUEST['submit_connect']))) {
|
|||||||
*/
|
*/
|
||||||
PMA_syncDisplayHeaderSource($src_db);
|
PMA_syncDisplayHeaderSource($src_db);
|
||||||
$odd_row = false;
|
$odd_row = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Display the matching tables' names and difference, first
|
* Display the matching tables' names and difference, first
|
||||||
*/
|
*/
|
||||||
@@ -339,8 +340,8 @@ if ((isset($_REQUEST['submit_connect']))) {
|
|||||||
*/
|
*/
|
||||||
if (($num_alter_cols > 0) || ($num_insert_cols > 0) || ($num_remove_cols > 0) || ($num_add_index > 0) || ($num_remove_index > 0)) {
|
if (($num_alter_cols > 0) || ($num_insert_cols > 0) || ($num_remove_cols > 0) || ($num_add_index > 0) || ($num_remove_index > 0)) {
|
||||||
|
|
||||||
echo '<img class="icon" src="' . $pmaThemeImage . 'new_struct.jpg" width="29" height="29"
|
echo '<img class="icon struct_img" src="' . $pmaThemeImage . 'new_struct.jpg" width="29" height="29"
|
||||||
alt="' . __('Click to select') . '" onmouseover="change_Image(this);" onmouseout="change_Image(this);"
|
alt="' . __('Click to select') . '"
|
||||||
onclick="showDetails(' . "'MS" . $i . "','" . $num_alter_cols . "','" .$num_insert_cols .
|
onclick="showDetails(' . "'MS" . $i . "','" . $num_alter_cols . "','" .$num_insert_cols .
|
||||||
"','" . $num_remove_cols . "','" . $num_add_index . "','" . $num_remove_index . "'"
|
"','" . $num_remove_cols . "','" . $num_add_index . "','" . $num_remove_index . "'"
|
||||||
. ', this ,' . "'" . htmlspecialchars($matching_tables[$i]) . "'" . ')"/>';
|
. ', this ,' . "'" . htmlspecialchars($matching_tables[$i]) . "'" . ')"/>';
|
||||||
@@ -351,8 +352,8 @@ if ((isset($_REQUEST['submit_connect']))) {
|
|||||||
if (isset($update_array[$i]) || isset($insert_array[$i])) {
|
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]])) {
|
if (isset($update_array[$i][0][$matching_tables_keys[$i][0]]) || isset($insert_array[$i][0][$matching_tables_keys[$i][0]])) {
|
||||||
|
|
||||||
echo '<img class="icon" src="' . $pmaThemeImage . 'new_data.jpg" width="29" height="29"
|
echo '<img class="icon data_img" src="' . $pmaThemeImage . 'new_data.jpg" width="29" height="29"
|
||||||
alt="' . __('Click to select') . '" onmouseover="change_Image(this);" onmouseout="change_Image(this);"
|
alt="' . __('Click to select') . '"
|
||||||
onclick="showDetails('. "'MD" . $i . "','" . $num_of_updates . "','" . $num_of_insertions .
|
onclick="showDetails('. "'MD" . $i . "','" . $num_of_updates . "','" . $num_of_insertions .
|
||||||
"','" . null . "','" . null . "','" . null . "'" . ', this ,' . "'" . htmlspecialchars($matching_tables[$i]) . "'" . ')" />';
|
"','" . null . "','" . null . "','" . null . "'" . ', this ,' . "'" . htmlspecialchars($matching_tables[$i]) . "'" . ')" />';
|
||||||
}
|
}
|
||||||
@@ -367,15 +368,15 @@ if ((isset($_REQUEST['submit_connect']))) {
|
|||||||
$odd_row = PMA_syncDisplayBeginTableRow($odd_row);
|
$odd_row = PMA_syncDisplayBeginTableRow($odd_row);
|
||||||
echo '<td> + ' . htmlspecialchars($source_tables_uncommon[$j]) . '</td> ';
|
echo '<td> + ' . htmlspecialchars($source_tables_uncommon[$j]) . '</td> ';
|
||||||
|
|
||||||
echo '<td align="center"><img class="icon" src="' . $pmaThemeImage . 'new_struct.jpg" width="29" height="29"
|
echo '<td align="center"><img class="icon struct_img" src="' . $pmaThemeImage . 'new_struct.jpg" width="29" height="29"
|
||||||
alt="' . __('Click to select') . '" onmouseover="change_Image(this);" onmouseout="change_Image(this);"
|
alt="' . __('Click to select') . '"
|
||||||
onclick="showDetails(' . "'US" . $j . "','" . null . "','" . null . "','" . null . "','" . null . "','" . null . "'" . ', this ,'
|
onclick="showDetails(' . "'US" . $j . "','" . null . "','" . null . "','" . null . "','" . null . "','" . null . "'" . ', this ,'
|
||||||
. "'" . htmlspecialchars($source_tables_uncommon[$j]) . "'" . ')"/>';
|
. "'" . htmlspecialchars($source_tables_uncommon[$j]) . "'" . ')"/>';
|
||||||
|
|
||||||
if ($row_count[$j] > 0)
|
if ($row_count[$j] > 0)
|
||||||
{
|
{
|
||||||
echo '<img class="icon" src="' . $pmaThemeImage . 'new_data.jpg" width="29" height="29"
|
echo '<img class="icon data_img" src="' . $pmaThemeImage . 'new_data.jpg" width="29" height="29"
|
||||||
alt="' . __('Click to select') . '" onmouseover="change_Image(this);" onmouseout="change_Image(this);"
|
alt="' . __('Click to select') . '"
|
||||||
onclick="showDetails(' . "'UD" . $j . "','" . null . "','" . $row_count[$j] . "','" . null .
|
onclick="showDetails(' . "'UD" . $j . "','" . null . "','" . $row_count[$j] . "','" . null .
|
||||||
"','" . null . "','" . null . "'" . ', this ,' . "'" . htmlspecialchars($source_tables_uncommon[$j]) . "'" . ')" />';
|
"','" . null . "','" . null . "'" . ', this ,' . "'" . htmlspecialchars($source_tables_uncommon[$j]) . "'" . ')" />';
|
||||||
}
|
}
|
||||||
@@ -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)) {
|
if (($num_alter_cols > 0) || ($num_insert_cols > 0) || ($num_remove_cols > 0) || ($num_add_index > 0) || ($num_remove_index > 0)) {
|
||||||
echo '<img class="icon" src="' . $pmaThemeImage . 'new_struct.jpg" width="29" height="29"
|
echo '<img class="icon struct_img" src="' . $pmaThemeImage . 'new_struct.jpg" width="29" height="29"
|
||||||
alt="' . __('Click to select') . '" onmouseover="change_Image(this);" onmouseout="change_Image(this);"
|
alt="' . __('Click to select') . '"
|
||||||
onclick="showDetails(' . "'MS" . $i . "','" . $num_alter_cols . "','" . $num_insert_cols . "','" . $num_remove_cols . "','" . $num_add_index . "','" . $num_remove_index . "'" .',
|
onclick="showDetails(' . "'MS" . $i . "','" . $num_alter_cols . "','" . $num_insert_cols . "','" . $num_remove_cols . "','" . $num_add_index . "','" . $num_remove_index . "'" .',
|
||||||
this ,' . "'" . htmlspecialchars($matching_tables[$i]) . "'" . ')"/>';
|
this ,' . "'" . htmlspecialchars($matching_tables[$i]) . "'" . ')"/>';
|
||||||
}
|
}
|
||||||
@@ -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]]))
|
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]]))) {
|
|| (isset($matching_tables_keys[$i][0]) && isset($insert_array[$i][0][$matching_tables_keys[$i][0]]))) {
|
||||||
echo '<img class="icon" src="' . $pmaThemeImage . 'new_data.jpg" width="29" height="29"
|
echo '<img class="icon data_img" src="' . $pmaThemeImage . 'new_data.jpg" width="29" height="29"
|
||||||
alt="' . __('Click to select') . '" onmouseover="change_Image(this);" onmouseout="change_Image(this);"
|
alt="' . __('Click to select') . '"
|
||||||
onclick="showDetails(' . "'MD" . $i . "','" . $num_of_updates . "','" . $num_of_insertions .
|
onclick="showDetails(' . "'MD" . $i . "','" . $num_of_updates . "','" . $num_of_insertions .
|
||||||
"','" . null . "','" . null . "','" . null . "'" .', this ,' . "'" . htmlspecialchars($matching_tables[$i]) . "'" . ')" />';
|
"','" . null . "','" . null . "','" . null . "'" .', this ,' . "'" . htmlspecialchars($matching_tables[$i]) . "'" . ')" />';
|
||||||
}
|
}
|
||||||
@@ -789,8 +790,8 @@ if (isset($_REQUEST['Table_ids'])) {
|
|||||||
*/
|
*/
|
||||||
if (!(in_array($j, $uncommon_table_structure_diff))) {
|
if (!(in_array($j, $uncommon_table_structure_diff))) {
|
||||||
if (isset($uncommon_tables[$j])) {
|
if (isset($uncommon_tables[$j])) {
|
||||||
echo '<img class="icon" src="' . $pmaThemeImage . 'new_struct.jpg" width="29" height="29"
|
echo '<img class="icon struct_img" src="' . $pmaThemeImage . 'new_struct.jpg" width="29" height="29"
|
||||||
alt="' . __('Click to select') . '" onmouseover="change_Image(this);" onmouseout="change_Image(this);"
|
alt="' . __('Click to select') . '"
|
||||||
onclick="showDetails(' . "'US" . $j . "','" . null . "','" . null . "','" . null . "','" . null . "','" . null . "'" . ', this ,' . "'" . htmlspecialchars($source_tables_uncommon[$j]) . "'" . ')"/>' .' ';
|
onclick="showDetails(' . "'US" . $j . "','" . null . "','" . null . "','" . null . "','" . null . "','" . null . "'" . ', this ,' . "'" . htmlspecialchars($source_tables_uncommon[$j]) . "'" . ')"/>' .' ';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -801,8 +802,8 @@ if (isset($_REQUEST['Table_ids'])) {
|
|||||||
*/
|
*/
|
||||||
if (!(in_array($j, $uncommon_table_data_diff))) {
|
if (!(in_array($j, $uncommon_table_data_diff))) {
|
||||||
if (isset($row_count[$j]) && ($row_count > 0)) {
|
if (isset($row_count[$j]) && ($row_count > 0)) {
|
||||||
echo '<img class="icon" src="' . $pmaThemeImage . 'new_data.jpg" width="29" height="29"
|
echo '<img class="icon data_img" src="' . $pmaThemeImage . 'new_data.jpg" width="29" height="29"
|
||||||
alt="' . __('Click to select') . '" onmouseover="change_Image(this);" onmouseout="change_Image(this);"
|
alt="' . __('Click to select') . '"
|
||||||
onclick="showDetails(' . "'UD" . $j . "','" . null ."','" . $row_count[$j] ."','"
|
onclick="showDetails(' . "'UD" . $j . "','" . null ."','" . $row_count[$j] ."','"
|
||||||
. null . "','" . null . "','" . null . "'" . ', this ,' . "'". htmlspecialchars($source_tables_uncommon[$j]) . "'" . ')" />';
|
. null . "','" . null . "','" . null . "'" . ', this ,' . "'". htmlspecialchars($source_tables_uncommon[$j]) . "'" . ')" />';
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user