/*+******************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License * The Original Code is: vtiger CRM Open Source * The Initial Developer of the Original Code is vtiger. * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. ********************************************************************************/ function editworkflowscript($, conditions){ var vtinst = new VtigerWebservices("webservice.php"); var fieldValidator; var desc = null; var editpopupobj; function id(v){ return v; } function map(fn, list){ var out = []; $.each(list, function(i, v){ out[out.length]=fn(v); }); return out; } function field(name){ return function(object){ if(typeof(object) != 'undefined') { return object[name]; } }; } function zip(){ var out = []; var lengths = map(field('length'), arguments); var min = reduceR(function(a,b){ return a'+v+''); }); } function resetFields(opType, condno){ var ops = $("#save_condition_"+condno+"_operation"); var selOperations = operations[opType.name]; var selectedOperations = new Array(); // Remove 'has changed' operation for reference fields var fe = $("#save_condition_"+condno+"_fieldname"); var fullFieldName = fe.attr('value'); var group = fullFieldName.match(/(\w+) : \((\w+)\) (\w+)/); if(group != null){ for(var i=0; i'+e.label+''; }, opType['picklistValues']) ); value.replaceWith(''); $("#save_condition_"+condno+"_value_type").attr("value", "rawtext"); } var functions = { string:function(opType, condno){ var value = $(format("#save_condition_%s_value", condno)); value.replaceWith(format('', condno)); var fv = $("#save_condition_"+condno+"_value"); fv.bind("focus", function() { editFieldExpression($(this), opType); }); fv.bind("click", function() { editFieldExpression($(this), opType); }); fv.bind("keypress", function() { editFieldExpression($(this), opType); }); }, picklist:forPicklist, multipicklist:forPicklist }; var ret = functions[fieldType]; if(ret==null){ ret = functions['string']; } return ret; } function removeCondition(groupno, condno){ $(format("#save_condition_%s", condno)).remove(); resetJoinCondition(groupno, condno); } function removeConditionGroup(groupno){ $(format("#condition_group_%s", groupno)).remove(); $(format("#condition_group_%s_joincondition", groupno)).remove(); resetGroupJoinCondition(groupno); } function resetJoinCondition(groupno, condno) { var lastCondition = $("#save_condition_group_"+groupno+" div:last"); lastCondition.children(".joincondition").css("visibility", "hidden"); var previousLastCondition = lastCondition.prev(); if(previousLastCondition.length > 0) { previousLastCondition.children(".joincondition").css("visibility", "visible"); } var groupConditions = $(format("#save_condition_group_%s", groupno)).children(); if(groupConditions.length <= 0) { removeConditionGroup(groupno); } resetGroupJoinCondition(groupno); } function resetGroupJoinCondition(groupno) { var firstChildNode = $("#save_conditions :first"); if(firstChildNode.length > 0 && firstChildNode.attr('class').indexOf('condition_group_join_block') >= 0) { firstChildNode.remove(); } } //Convert user type into reference for consistency in describe objects //This is done inplace function referencify(desc){ var fields = desc['fields']; for(var i=0; i 0) { group_condition_html = '
\ \
'; } $("#save_conditions").append( group_condition_html + '
\
\ \ \
\
\
\
\
\ \
\
' ); var gpcond = $("#add_group_condition_"+groupid); gpcond.bind("click", function(){ addCondition(groupid, condno++); }); var rem_group_img = $("#save_condition_group_"+groupid+"_remove"); rem_group_img.bind("click", function(){ removeConditionGroup(groupid); }); // First set groupno to highest groupid if(groupno < groupid) { groupno = groupid; } // Once groupno is same as highest groupid, increment it for next group usage if(groupid == groupno) { groupno += 1; } } $("#save_condition_group_"+groupid).append( '
\ \ \ \ \ \ \ \ \
' ); resetJoinCondition(groupid, condid); var fe = $("#save_condition_"+condid+"_fieldname"); var i = 1; fillOptions(fe, fieldLabels); var fullFieldName = fe.attr("value"); resetFields(getFieldType(fullFieldName), condid); var re = $("#save_condition_"+condid+"_remove"); re.bind("click", function(){ removeCondition(groupid, condid); }); fe.bind("change", function(){ var select = $(this); var condNo = select.attr("id").match(/save_condition_(\d+)_fieldname/)[1]; var fullFieldName = $(this).attr('value'); resetFields(getFieldType(fullFieldName), condNo); }); } var newTaskPopup = NewTaskPopup(); $("#new_task").click(function(){ newTaskPopup.show(); }); var newTemplatePopup = NewTemplatePopup(); $("#new_template").click(function(){ newTemplatePopup.show(); }); var groupno=0; var condno=0; if(conditions){ $.each(conditions, function(i, condition){ var fieldname = condition["fieldname"]; var groupid = condition["groupid"]; if(groupid == '') groupid = 0; addCondition(groupid, condno); $(format("#save_condition_%s_fieldname", condno)).attr("value", fieldname); resetFields(getFieldType(fieldname), condno); $(format("#save_condition_%s_operation", condno)).attr("value", condition["operation"]); $('#dump').html(condition["value"]); var text = $('#dump').text(); $(format("#save_condition_%s_value", condno)).attr("value", text); $(format("#save_condition_%s_value_type", condno)).attr("value", condition["valuetype"]); if(condition["joincondition"] != '') { $(format("#save_condition_%s_joincondition", condno)).attr("value", condition["joincondition"]); } if(condition["groupjoin"] != '') { $(format("#save_condition_group_%s_joincondition", groupid)).attr("value", condition["groupjoin"]); } condno+=1; }); } $("#save_conditions_add").bind("click", function(){ addCondition(groupno, condno++); }); $("#save_submit").bind("click", function(){ var conditions = []; i=0; $("#save_conditions").children(".condition_group_block").each(function(j, conditiongroupblock){ $(conditiongroupblock).children(".save_condition_group").each(function(k, conditiongroup){ $(conditiongroup).children().each(function(l){ var fieldname = $(this).children(".fieldname").attr("value"); var operation = $(this).children(".operation").attr("value"); var value = $(this).children(".expressionvalue").attr("value"); var valuetype = $(this).children(".expressiontype").attr("value"); var joincondition = $(this).children(".joincondition").attr("value"); var groupid = $(this).children(".groupid").attr("value"); var groupjoin = ''; if(groupid != '') groupjoin = $('#save_condition_group_'+groupid+'_joincondition').attr("value"); var condition = { fieldname:fieldname, operation:operation, value:value, valuetype:valuetype, joincondition:joincondition, groupid:groupid, groupjoin:groupjoin }; conditions[i++]=condition; }); }); }); if(conditions.length==0){ var out = ""; }else{ var out = JSON.stringify(conditions); } $("#save_conditions_json").attr("value", out); }); pageLoadingPopup.close(); $('#save_conditions_add').show(); $('#new_task').show(); $('#save_submit').show(); })); })); })); }); }