Files
crm.e5.pl/jssource/src_files/modules/MergeRecords/Merge.js
2024-04-27 09:23:34 +02:00

403 lines
13 KiB
JavaScript

/*********************************************************************************
* SugarCRM is a customer relationship management program developed by
* SugarCRM, Inc. Copyright (C) 2004-2010 SugarCRM Inc.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU Affero General Public License version 3 as published by the
* Free Software Foundation with the addition of the following permission added
* to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
* IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
* OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
* details.
*
* You should have received a copy of the GNU Affero General Public License along with
* this program; if not, see http://www.gnu.org/licenses or write to the Free
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*
* You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
* SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "Powered by
* SugarCRM" logo. If the display of the logo is not reasonably feasible for
* technical reasons, the Appropriate Legal Notices must display the words
* "Powered by SugarCRM".
********************************************************************************/
var lbl_remove = SUGAR.language.get('app_strings', 'LBL_REMOVE');
function remove_filter(spanfieldid) {
var selspan = document.getElementById(spanfieldid);
//hide the span
selspan.setAttribute("style","visibility:hidden");
selspan.innerHTML='';//' '
//and id to avail list.
var ops=object_refs['field_avail_list'].options;
var newoption = new Option(selspan.getAttribute("Value"),selspan.getAttribute("ValueId"),false,true);
ops.add(newoption);
}
function ajax_fetch_sync(url,post_data)
{
global_xmlhttp = getXMLHTTPinstance();
var method = 'GET';
if ( typeof(post_data) != 'undefined' )
{
method = 'POST';
}
try
{
global_xmlhttp.open(method, url,false);
}
catch(error)
{
alert('message:'+error.message+":url:"+url);
}
if ( method == 'POST')
{
global_xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
}
global_xmlhttp.send(post_data);
var ajax_response = {"responseText":global_xmlhttp.responseText,"responseXML":global_xmlhttp.responseXML};
return ajax_response;
}
//----------------------------------------------------
//----------------------------------------------------
//----------------------------------------------------
function get_fields_to_dedup(parent_mod)
{
var rel_map_div_obj = document.getElementById('rel_map');
if(parent_mod != '')
{
var request_id = 1;
var url = site_url + '/index.php?to_pdf=1&sugar_body_only=1&inline=1&parent_module=' + parent_mod + '&module=MigrationMappings&action=GetRelationshipsToMap';
var ajax_return_obj = ajax_fetch_sync(url);
try { eval("var responseObj =" + ajax_return_obj['responseText']); }
catch(e) { alert(ajax_return_obj['responseText']); }
build_avail_rels_array(responseObj);
rel_map_div_obj.innerHTML = responseObj['html_content'];
}
else
{
rel_map_div_obj.innerHTML = '';
}
return true;
}
function get_dedup_fields()
{
var parent_div = document.getElementById('filter_def');
var node;
var spannode;
var value;
var valueid;
var style;
document.DedupSetup.dedup_fields.value='';
for (node in parent_div.childNodes) {
spannode=parent_div.childNodes[node];
if (spannode.tagName=='SPAN') {
value= spannode.getAttribute('value');
valueid=spannode.getAttribute('valueid');
style=spannode.getAttribute('style');
if (typeof(style) == 'undefined' || style==null || style=='' || style.lastIndexOf('hidden') == -1 ) {
if (document.DedupSetup.dedup_fields.value != '') {
document.DedupSetup.dedup_fields.value=document.DedupSetup.dedup_fields.value + '#';
}
document.DedupSetup.dedup_fields.value = document.DedupSetup.dedup_fields.value + valueid;
}
}
}
//var selected_fields_obj = document.getElementById('field_include_list[]');
//for(i=0; i < selected_fields_obj.length; i++)
//{
// document.DedupSetup.dedup_fields.value = document.DedupSetup.dedup_fields.value + selected_fields_obj.options[i].value;
// if(i != (selected_fields_obj.length - 1)) { document.DedupSetup.dedup_fields.value += '#'; }
//}
// document.DedupSetup.submit();
}
//-------------------------------------------------------------------
//-------------------------------------------------------------------
//-------------------------------------------------------------------
//-------------------------------------------------------------------
//-------------------------------------------------------------------
//-------------------------------------------------------------------
var object_refs = new Object();
object_refs['field_include_list'] = document.DedupSetup['field_include_list'];
object_refs['field_avail_list'] = document.DedupSetup['field_avail_list'];
function setselected(included_name,avail_name)
{
var included_columns_ref = object_refs[included_name];
var avail_columns_ref = object_refs[avail_name];
var included_td = document.getElementById(included_name+'_td');
var avail_td = document.getElementById(avail_name+'_td');
var selected_avail = new Array();
var notselected_avail = new Array();
var notselected_include = new Array();
for (i=0; i < avail_columns_ref.options.length; i++)
{
if (avail_columns_ref.options[i].selected == true)
{
selected_avail[selected_avail.length] = {text:avail_columns_ref.options[i].text, value:avail_columns_ref.options[i].value};
}
else
{
notselected_avail[notselected_avail.length] = {text:avail_columns_ref.options[i].text, value:avail_columns_ref.options[i].value};
}
}
var right_select_html_info = new Object();
var right_options = new Array();
var right_select = new Object();
right_select['name'] = avail_name+ '[]';
right_select['id'] = avail_name;
right_select['multiple'] = 'true';
right_select['size'] = '10';
for (i=0;i < notselected_avail.length;i++)
{
right_options[right_options.length] = notselected_avail[i];
}
right_select_html_info['options'] = right_options;
right_select_html_info['select'] = right_select;
var right_html = buildSelectHTML(right_select_html_info);
avail_td.innerHTML = right_html;
object_refs[avail_name] = avail_td.getElementsByTagName('select')[0];
//////////////////////////////
for(p=0; p < selected_avail.length; p++)
{
addFieldRow(selected_avail[p].value, selected_avail[p].text)
}
///////////////////////////
}
function up(name) {
var td = document.getElementById(name+'_td');
var obj = td.getElementsByTagName('select')[0];
obj = (typeof obj == "string") ? document.getElementById(obj) : obj;
if (obj.tagName.toLowerCase() != "select" && obj.length < 2)
return false;
var sel = new Array();
for (i=0; i<obj.length; i++) {
if (obj[i].selected == true) {
sel[sel.length] = i;
}
}
for (i in sel) {
if (sel[i] != 0 && !obj[sel[i]-1].selected) {
var tmp = new Array(obj[sel[i]-1].text, obj[sel[i]-1].value);
obj[sel[i]-1].text = obj[sel[i]].text;
obj[sel[i]-1].value = obj[sel[i]].value;
obj[sel[i]].text = tmp[0];
obj[sel[i]].value = tmp[1];
obj[sel[i]-1].selected = true;
obj[sel[i]].selected = false;
}
}
}
function down(name) {
var td = document.getElementById(name+'_td');
var obj = td.getElementsByTagName('select')[0];
if (obj.tagName.toLowerCase() != "select" && obj.length < 2)
return false;
var sel = new Array();
for (i=obj.length-1; i>-1; i--) {
if (obj[i].selected == true) {
sel[sel.length] = i;
}
}
for (i in sel) {
if (sel[i] != obj.length-1 && !obj[sel[i]+1].selected) {
var tmp = new Array(obj[sel[i]+1].text, obj[sel[i]+1].value);
obj[sel[i]+1].text = obj[sel[i]].text;
obj[sel[i]+1].value = obj[sel[i]].value;
obj[sel[i]].text = tmp[0];
obj[sel[i]].value = tmp[1];
obj[sel[i]+1].selected = true;
obj[sel[i]].selected = false;
}
}
}
function buildSelectHTML(info)
{
var text;
text = "<div align='left'><select";
if ( typeof (info['select']['size']) != 'undefined')
{
text +=" size=\""+ info['select']['size'] +"\"";
}
if ( typeof (info['select']['name']) != 'undefined')
{
text +=" name=\""+ info['select']['name'] +"\"";
}
if ( typeof (info['select']['style']) != 'undefined')
{
text +=" style=\""+ info['select']['style'] +"\"";
}
if ( typeof (info['select']['onchange']) != 'undefined')
{
text +=" onChange=\""+ info['select']['onchange'] +"\"";
}
if ( typeof (info['select']['multiple']) != 'undefined')
{
text +=" multiple";
}
text +=">";
for(i=0; i<info['options'].length;i++)
{
option = info['options'][i];
text += "<option value=\""+option['value']+"\" ";
if ( typeof (option['selected']) != 'undefined' && option['selected']== true)
{
text += "SELECTED";
}
text += ">"+option['text']+"</option>";
}
text += "</select></div>";
return text;
}
//////////////////////////////////////////////
var fieldCount = 0;
function addFieldRow(colName, colLabel) {
var tableId = 'search_type';
var rowIdName = 'field';
var fieldArrayCount;
var optionVal;
var optionDispVal;
var optionsIndex = 0;
fieldCount = fieldCount + 1;
document.DedupSetup.num_fields.value = fieldCount;
var selElement = document.createElement("select");
var selectName = colName + "SearchType";
selElement.setAttribute("name", selectName);
var i=0;
for (theoption in operator_options) {
selElement.options[i] = new Option(operator_options[theoption],theoption, false, false);
i++;
}
var aElement = document.createElement("a");
aElement.setAttribute("href","javascript:remove_filter('filter_" + colName + "')");
aElement.setAttribute("class","listViewTdToolsS1");
var imgElement = document.createElement("img");
imgElement.setAttribute("src", delete_inline_image);
imgElement.setAttribute("align","absmiddle");
imgElement.setAttribute("alt",lbl_remove);
imgElement.setAttribute("border","0");
imgElement.setAttribute("height","12");
imgElement.setAttribute("width","12");
aElement.appendChild(imgElement);
aElement.appendChild(document.createTextNode(" "));
var div = document.getElementById('filter_def');
var span1 = document.getElementById('filter_'+colName);
if (span1 == null || span1=='' || typeof(span1)=='undefined') {
span1=document.createElement("span");
} else {
span1.setAttribute("style","visibility:visible");
}
span1.setAttribute("id",'filter_'+colName);
span1.setAttribute("Value",colLabel);
span1.setAttribute("ValueId",colName);
//table as a child of span element.
//table with only row only.
var table = document.createElement("table");
//usage or insertRow is required by IE, ironically this call
//produces bad UI when using IE on mac.
var row = table.insertRow(table.rows.length );
table.setAttribute("width","100%");
table.setAttribute("border","0");
table.setAttribute("cellpadding","0");
var td1= document.createElement("td");
td1.setAttribute("width","2%");
td1.appendChild(aElement);
row.appendChild(td1)
var td2= document.createElement("td");
td2.setAttribute("width","20%");
td2.appendChild(document.createTextNode(colLabel + ': '));
row.appendChild(td2)
var td3= document.createElement("td");
td3.setAttribute("width","10%");
td3.appendChild(selElement);
row.appendChild(td3);
var coldata;
eval("coldata=bean_data."+ colName+ ";");
var edit=document.createElement("input");
edit.setAttribute("type","text");
edit.setAttribute("name",colName + 'SearchField');
edit.setAttribute("id",colName + 'SearchField');
edit.setAttribute("value",coldata);
var td5= document.createElement("td");
td5.setAttribute("width","68%");
td5.appendChild(edit);
row.appendChild(td5);
//table.appendChild(row);
span1.appendChild(table);
div.appendChild(span1);
}