%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/js/bizproc/ |
Current File : /home/bitrix/www/bitrix/js/bizproc/bizproc.js |
if(!DragNDrop) { in_array = function (ar, str) { var i; for(i=0; i<ar.length; i++) if(ar[i]===str) return true; return false; } function CreateActivity(oActivity) { if(!oActivity.Type) oActivity = {'Type': oActivity}; var t = oActivity.Type, a; if(arAllActivities[t.toLowerCase()] && arAllActivities[t.toLowerCase()]['JSCLASS']) { a = eval("new "+arAllActivities[t.toLowerCase()]['JSCLASS']+"()"); if(!oActivity.Properties) oActivity.Properties = {}; else if (oActivity.Properties instanceof Array) { var k, properties = BX.clone(oActivity.Properties); oActivity.Properties = {}; for (k in properties) if (properties.hasOwnProperty(k)) oActivity.Properties[k] = properties[k]; } if(!oActivity.Properties['Title']) oActivity.Properties['Title'] = arAllActivities[t.toLowerCase()]['NAME']; if(!oActivity.Icon && arAllActivities[t.toLowerCase()]['ICON']) oActivity.Icon = arAllActivities[t.toLowerCase()]['ICON']; } else if (typeof window[t] !== 'undefined') a = eval("new " + t + "()"); else a = new UnknownBizProcActivity(); a.Init(oActivity); return a; } function JSToPHPHidd(v, ob, varname) { if (typeof BPDesignerUseJson !== 'undefined' && BPDesignerUseJson) { v[varname] = JSON.stringify(ob, function (i, v) { if (typeof(v) == 'boolean') { return v ? '1' : '0'; } return v; }); return true; } var res, i, key; if(typeof(ob)=='object') { res = []; var isSimpleArray = false; if(ob instanceof Array) { isSimpleArray = true; for(i in ob) { if(parseInt(i)!=i) { isSimpleArray = false; break; } } } if(isSimpleArray) { for(i=0; i<ob.length; i++) JSToPHPHidd(v, ob[i], varname+'['+i+']'); } else { for(key in ob) JSToPHPHidd(v, ob[key], varname+'['+key+']'); } return true; } if(typeof(ob)=='boolean') { if(ob) v[varname] = "1"; else v[varname] = "0"; return true; } v[varname] = ob; return true; } function JSToPHP(ob, varname) { if (typeof BPDesignerUseJson !== 'undefined' && BPDesignerUseJson) { return varname + '=' + encodeURIComponent(JSON.stringify(ob, function (i, v) { if (typeof(v) == 'boolean') { return v ? '1' : '0'; } return v; })); } var res, i, key; if(typeof(ob)=='object') { res = []; var isSimpleArray = false; if(ob instanceof Array) { isSimpleArray = true; for(i in ob) { if(parseInt(i)!=i) { isSimpleArray = false; break; } } } if(isSimpleArray) { for(i=0; i<ob.length; i++) res.push(JSToPHP(ob[i], varname+'['+i+']')); } else { for(key in ob) res.push(JSToPHP(ob[key], varname+'['+key+']')); } return res.join("&", res); } if(typeof(ob)=='boolean') { if(ob) return varname + '=1'; return varname + "=0"; } return varname + '=' + encodeURIComponent(ob); } function ActGetRealPos(el) { if(!el || !el.offsetParent) return false; return BX.pos(el, true); } function XMLEncode(str) { if(!(typeof(str) == "string" || str instanceof String)) return str; str = str.replace(/&/g, '&'); str = str.replace(/"/g, '"'); str = str.replace(/'/g, '''); str = str.replace(/</g, '<'); str = str.replace(/>/g, '>'); return str; } function HTMLEncode(str) { if(!(typeof(str) == "string" || str instanceof String)) return str; str = str.replace(/&/g, '&'); str = str.replace(/"/g, '"'); str = str.replace(/</g, '<'); str = str.replace(/>/g, '>'); return str; } function GenUniqId() { return parseInt(Math.random()*100000)+'_'+parseInt(Math.random()*100000)+'_'+parseInt(Math.random()*100000)+'_'+parseInt(Math.random()*100000); } function FindActivityById(template, id) { if(template.Name == id) return template; var ar = false; if(template.Children) { for(var i=0; i<template.Children.length; i++) { ar = FindActivityById(template.Children[i], id); if(ar) return ar; } } return ar; } function _crt(r, c) { r = r || 1; c = c || 1; var i, j, row, cell, t = document.createElement('TABLE'); t.width = '100%'; t.cellSpacing = '0'; t.cellPadding = '0'; t.border = '0'; for (i = 0; i < r; i++) { row = t.insertRow(-1); for (j = 0; j < c; j++) { cell = row.insertCell(-1); cell.align = 'center'; cell.vAlign = 'center'; } } return t; } /////////////////////////////////////////////////////////////////////////////////////// // BizProcActivity /////////////////////////////////////////////////////////////////////////////////////// BizProcActivity = function() { var ob = this; ob.childActivities = []; ob.parentActivity = null; ob.Name = 'A'+ GenUniqId(); ob.Type = 'Activity'; ob.Properties = {'Title': ''}; arAllId[ob.Name] = true; this.Init = function(oActivity) { if(oActivity.Name) { if(!arAllId[oActivity.Name]) { delete arAllId[this.Name]; this.Name = oActivity.Name; arAllId[this.Name] = true; } } if(oActivity['Properties']) this.Properties = BX.clone(oActivity['Properties']); if(oActivity['Icon']) this.Icon = oActivity['Icon']; if(oActivity.Type) this.Type = oActivity.Type; this.height = 0; this.width = 0; var activity; this.childActivities = []; if(!oActivity.Children && oActivity.childActivities) oActivity.Children = oActivity.childActivities; for(var i in oActivity.Children) { if (!oActivity.Children.hasOwnProperty(i)) continue; activity = CreateActivity(oActivity.Children[i]); activity.parentActivity = this; this.childActivities[this.childActivities.length] = activity; } }; ob.SerializeToXML = function (e) { if(ob.childActivities) { var s = '<activity class="'+XMLEncode(ob.Type)+'" name="'+XMLEncode(ob['Properties'].Title)+'" id="'+XMLEncode(ob.Name)+'" params="" >'; for(var i = 0; i < ob.childActivities.length; i++) s = s + ob.childActivities[i].SerializeToXML(); return s + '</activity>'; } else return '<activity class="'+XMLEncode(ob.Type)+'" name="'+XMLEncode(ob['Properties'].Title)+'" id="'+XMLEncode(ob.Name)+'" params="" />'; }; ob.Serialize = function () { var s = {'Type': ob.Type, 'Name': ob.Name, 'Properties': ob.Properties, 'Children': []}; if(ob.childActivities) { for(var i = 0; i < ob.childActivities.length; i++) s['Children'].push(ob.childActivities[i].Serialize()); } return s; }; ob.OnRemoveClick = function (e) { ob.parentActivity.RemoveChild(ob); }; ob.OnSettingsClick = function (e) { ob.Settings(); }; ob.Settings = function (e) { (new BX.CDialog({ 'content_url': "/bitrix/admin/"+MODULE_ID+"_bizproc_activity_settings.php?mode=public&bxpublic=Y&lang="+BX.message('LANGUAGE_ID')+"&entity="+ENTITY, 'content_post': 'id='+encodeURIComponent(ob.Name)+ '&' + 'decode=Y&' + 'document_type=' + encodeURIComponent(document_type) + '&' + 'activity='+encodeURIComponent(ob.Type)+ '&' + JSToPHP(arWorkflowParameters, 'arWorkflowParameters') + '&' + JSToPHP(arWorkflowVariables, 'arWorkflowVariables') + '&' + JSToPHP(Array(rootActivity.Serialize()), 'arWorkflowTemplate') + '&' + 'current_site_id=' + encodeURIComponent(CURRENT_SITE_ID) + '&' + 'sessid=' + BX.bitrix_sessid(), 'height': 500, 'width': 800 })).Show(); }; ob.RemoveResources = function (self) { if(ob.div && ob.div.parentNode) { ob.div.parentNode.removeChild(ob.div); ob.div = null; } }; ob.RemoveChild = function (ch) { var i, j; for(i = 0; i<ob.childActivities.length; i++) { if(ob.childActivities[i].Name == ch.Name) { while(ch.childActivities.length > 0) { ch.childActivities[0].parentActivity.RemoveChild(ch.childActivities[0]); } ch.childActivities = []; ch.RemoveResources(); ob.childActivities[i].parentActivity = null; delete ob.childActivities[i]; for(j = i; j<ob.childActivities.length - 1; j++) ob.childActivities[j] = ob.childActivities[j+1]; ob.childActivities.pop(); delete arAllId[ch.Name]; break; } } BPTemplateIsModified = true; }; ob.SetError = function (s, setFocus) { if (!ob.div) { return false; } if(s===false) ob.div.className = 'activity'; else ob.div.className = 'activityerr'; if (setFocus === true && s !== false) { BX.scrollToNode(ob.div); } }; ob.Draw = function (divC) { ob.div = divC.appendChild(document.createElement('DIV')); ob.div.className = 'activity'; var d1 = ob.div.appendChild(document.createElement('DIV')); d1.className = 'activityhead'; var d11 = d1.appendChild(document.createElement('DIV')); d11.className = 'activityheadr'; var d111 = d11.appendChild(document.createElement('DIV')); d111.className = 'activityheadl'; var a1 = d111.appendChild(document.createElement('A')); a1.className = 'activitydel'; a1.onclick = this.OnRemoveClick;// this! var a2 = d111.appendChild(document.createElement('A')); a2.className = 'activityset'; a2.onclick = this.OnSettingsClick;// this! if(this.OnHideClick) { var a3 = d111.appendChild(document.createElement('A')); a3.className = 'activitymin'; a3.onclick = this.OnHideClick;// this! } var sp = d111.appendChild(document.createElement('DIV')); //sp.innerHTML = HTMLEncode(ob['Properties']['Title']); sp.style.padding = '5px'; sp.style.cursor = 'move'; sp.onmousedown = function (e) { if(!e) e = window.event; var div = DragNDrop.StartDrag(e, ob); div.innerHTML = this.parentNode.parentNode.parentNode.parentNode.parentNode.innerHTML; div.style.width = this.parentNode.parentNode.parentNode.parentNode.offsetWidth + 'px'; } //d111.style.height = '10px'; var d2 = ob.div.appendChild(document.createElement('DIV')); d2.style.backgroundColor = '#ffffff'; d2.style.borderLeft = '2px #bebabb solid'; d2.style.borderRight = '2px #bebabb solid'; d2.style.overflowX = 'hidden'; d2.style.overflowY = 'hidden'; d2.style.height = (ob.activityHeight ? ob.activityHeight : '30px'); d2.ondblclick = ob.OnSettingsClick; if(ob.activityContent) { d2.appendChild(ob.activityContent); } else { var act = d2.appendChild(document.createElement('DIV')); if(ob.Icon) act.style.background = 'url('+ob.Icon+') left center no-repeat'; else act.style.background = 'url(/bitrix/images/bizproc/act_icon.gif) left center no-repeat'; act.style.height = '30px'; act.style.margin = '2px'; act.style.paddingLeft = '24px'; act.style.textAlign = 'left'; act.innerHTML = HTMLEncode(ob['Properties']['Title']); act.setAttribute('title', ob['Properties']['Title']); } var d3 = ob.div.appendChild(document.createElement('DIV')); d3.style.background = 'url(/bitrix/images/bizproc/act_b.gif)'; d3.style.height = '4px'; d3.style.overflowY = 'hidden'; var d33 = d3.appendChild(document.createElement('DIV')); d33.style.background = 'url(/bitrix/images/bizproc/act_br.gif) right top no-repeat'; var d333 = d33.appendChild(document.createElement('DIV')); d333.style.background = 'url(/bitrix/images/bizproc/act_bl.gif) left top no-repeat'; d333.style.height = '4px'; ob.div.style.margin = '0 auto'; ob.div.style.width = (ob.activityWidth ? ob.activityWidth : '170px'); if(ob.CheckFields && ob.CheckFields()===false) ob.SetError(true); }; this.SetHeight = function (iHeight) { this.height = iHeight; }; ob.findChildById = function (id) { if(ob.childActivities) { for(var i = 0; i < ob.childActivities.length; i++) { if (id === ob.childActivities[i]['Name']) { return ob.childActivities[i]; } else { var found = ob.childActivities[i].findChildById(id); if (found) { return found; } } } } return null; } }; function _DragNDrop() { var ob = this; var drdrop, antiselect; var dragging = true; ob.GetDrDr = function() { if(ob.drdrop) return; ob.drdrop = document.body.appendChild(document.createElement('DIV')); ob.drdrop.style.display = 'none'; ob.drdrop.style.position = 'absolute'; ob.drdrop.style.zIndex = '50000'; ob.drdrop.style.MozOpacity = 0.60; ob.drdrop.style.opacity = 0.60; ob.drdrop.style.filter = 'gray() alpha(opacity=60)'; ob.drdrop.style.border = '1px solid #CCCCCC'; ob.drdrop.style.fontSize = '12px'; ob.antiselect = document.body.appendChild(document.createElement('DIV')); ob.antiselect.id = "antiselect"; //ob.antiselect.style.height = '100%'; //ob.antiselect.style.width = '100%'; ob.antiselect.style.left = '0'; ob.antiselect.style.top = '0'; ob.antiselect.style.position = 'absolute'; ob.antiselect.style.MozUserSelect = 'none !important'; ob.antiselect.style.display = 'none'; ob.antiselect.style.backgroundColor = '#FFFFFF'; ob.antiselect.style.MozOpacity = 0.01; ob.antiselect.style.zIndex = '100000'; jsUtils.addEvent(document.body, "mousemove", ob.Dragging); jsUtils.addEvent(document.body, "mouseup", ob.Drop); } ob.obj = null; ob.StartDrag = function (e, obj) { ob.obj = obj; ob.GetDrDr(); if(!e) e = window.event; ob.antiselect.style.display = 'block'; var windowSize = jsUtils.GetWindowScrollSize(); ob.antiselect.style.width = windowSize.scrollWidth + "px"; ob.antiselect.style.height = windowSize.scrollHeight + "px"; ob.antiselect.style.opacity = 0.01; ob.antiselect.style.filter = 'gray() alpha(opacity=01)'; ob.dragging = true; ob.drdrop.style.display = 'block'; ob.scrollPos = jsUtils.GetWindowScrollPos(); ob.drdrop.style.top = e.clientY + ob.scrollPos.scrollTop + 1 +'px'; ob.drdrop.style.left = e.clientX + ob.scrollPos.scrollLeft + 1 + 'px'; return ob.drdrop; } ob.Handlers = {}; ob.AddHandler = function (eventName, func) { ob.Handlers[eventName] = ob.Handlers[eventName] || []; var i = 'i' + Math.random(); ob.Handlers[eventName][i] = func; return i; } ob.RemoveHandler = function (eventName, i) { if(ob.Handlers[eventName][i]) delete ob.Handlers[eventName][i]; } ob.Dragging = function (e) { if(!ob.dragging) return; if(!e) e = window.event; BX.fixEventPageXY(e); var X = e.pageX; var Y = e.pageY; ob.drdrop.style.left = X + 1 + 'px'; ob.drdrop.style.top = Y + 1 + 'px'; var scrollSize = BX.GetWindowInnerSize(); var scrollPos = BX.GetWindowScrollPos(); if((scrollSize.innerHeight - 30) < e.clientY) window.scrollBy(0, 20); if((scrollSize.innerWidth - 30) < e.clientX) window.scrollBy(20, 0); if(scrollPos.scrollTop>0 && e.clientY<30) window.scrollBy(0, -20); if(scrollPos.scrollLeft>0 && e.clientX<30) window.scrollBy(-20, 0); if(document.selection && document.selection.empty) document.selection.empty(); else window.getSelection().removeAllRanges(); for(var i in ob.Handlers['ondragging']) { if (!ob.Handlers['ondragging'].hasOwnProperty(i)) continue; if (ob.Handlers['ondragging'][i]) ob.Handlers['ondragging'][i](e, X, Y); } } ob._UnS = function () { if(ob.antiselect) ob.antiselect.style.display = 'none'; } ob.Drop = function (e) { if(!ob.dragging) return; if(!e) e = window.event; var scrollPos = jsUtils.GetWindowScrollPos(); var X = e.clientX + scrollPos.scrollLeft + 1 + 'px'; var Y = e.clientY + scrollPos.scrollTop + 1 +'px'; for(var i in ob.Handlers['ondrop']) { if (!ob.Handlers['ondrop'].hasOwnProperty(i)) continue; if (ob.Handlers['ondrop'][i]) ob.Handlers['ondrop'][i](X, Y, e); } ob.dragging = false; ob.drdrop.style.display = 'none'; setTimeout(ob._UnS, 0); } } UnknownBizProcActivity = function() { var ob = new BizProcActivity(); ob.Draw = function (divC) { ob.div = divC.appendChild(document.createElement('DIV')); ob.div.className = 'activityerr'; var d1 = ob.div.appendChild(document.createElement('DIV')); d1.className = 'activityhead'; var d11 = d1.appendChild(document.createElement('DIV')); d11.className = 'activityheadr'; var d111 = d11.appendChild(document.createElement('DIV')); d111.className = 'activityheadl'; var a1 = d111.appendChild(document.createElement('A')); a1.className = 'activitydel'; a1.onclick = this.OnRemoveClick;// this! var sp = d111.appendChild(document.createElement('DIV')); //sp.innerHTML = HTMLEncode(ob['Properties']['Title']); sp.style.padding = '5px'; sp.style.cursor = 'not-allowed'; var d2 = ob.div.appendChild(document.createElement('DIV')); d2.style.backgroundColor = '#E6E6E6'; d2.style.borderLeft = '2px #bebabb solid'; d2.style.borderRight = '2px #bebabb solid'; d2.style.overflowX = 'hidden'; d2.style.overflowY = 'hidden'; d2.style.height = (ob.activityHeight ? ob.activityHeight : '30px'); var act = d2.appendChild(document.createElement('DIV')); act.style.background = 'url(/bitrix/images/bizproc/act_icon.gif) left center no-repeat'; act.style.height = '30px'; act.style.margin = '2px'; act.style.paddingLeft = '24px'; act.style.textAlign = 'left'; act.innerHTML = HTMLEncode(ob['Properties']['Title']); act.setAttribute('title', ob['Properties']['Title']); var d3 = ob.div.appendChild(document.createElement('DIV')); d3.style.background = 'url(/bitrix/images/bizproc/act_bt.gif)'; d3.style.backgroundColor = '#E6E6E6'; d3.style.height = '4px'; d3.style.overflowY = 'hidden'; var d33 = d3.appendChild(document.createElement('DIV')); d33.style.background = 'url(/bitrix/images/bizproc/act_br.gif) right top no-repeat'; var d333 = d33.appendChild(document.createElement('DIV')); d333.style.background = 'url(/bitrix/images/bizproc/act_bl.gif) left top no-repeat'; d333.style.height = '4px'; ob.div.style.margin = '0 auto'; ob.div.style.width = (ob.activityWidth ? ob.activityWidth : '170px'); }; return ob; }; BX.namespace('BX.Bizproc'); BX.Bizproc.cloneTypeControl = function(tableID) { var tbl = document.getElementById(tableID); var cnt = tbl.rows.length; var oRow = tbl.insertRow(cnt); var oCell = oRow.insertCell(0); var sHTML = tbl.rows[cnt - 1].cells[0].innerHTML; var p = 0, s, e, n; while (true) { s = sHTML.indexOf('[n', p); if (s < 0) break; e = sHTML.indexOf(']', s); if (e < 0) break; n = parseInt(sHTML.substr(s + 2, e - s)); sHTML = sHTML.substr(0, s) + '[n' + (++n) + ']' + sHTML.substr(e + 1); p = s + 1; } p = 0; while (true) { s = sHTML.indexOf('__n', p); if (s < 0) break; e = sHTML.indexOf('_', s + 2); if (e < 0) break; n = parseInt(sHTML.substr(s + 3, e - s)); sHTML = sHTML.substr(0, s) + '__n' + (++n) + '_' + sHTML.substr(e + 1); p = e + 1; } oCell.innerHTML = sHTML; var pattern = new RegExp('<' + 'script' + '>[^\000]*?<' + '\/' + 'script' + '>', 'ig'); var code = sHTML.match(pattern); if (code) { for (var i = 0; i < code.length; i++) { if (code[i] != '') { s = code[i].substring(8, code[i].length - 9); jsUtils.EvalGlobal(s); } } } }; BX.Bizproc.cloneTypeControlHtml = function(tableID, wrapperId) { var tbl = document.getElementById(tableID); var cnt = tbl.rows.length; var oRow = tbl.insertRow(cnt); var oCell = oRow.insertCell(0); var sHTML = tbl.rows[cnt - 1].cells[0].innerHTML; var p = 0, s, e, n = 0; s = sHTML.indexOf('[n', p); if (s > -1) { e = sHTML.indexOf(']', s); if (e > -1) { n = parseInt(sHTML.substr(s + 2, e - s)); ++n; } } BX.ajax({ method: 'GET', dataType: 'html', url: '/bitrix/tools/bizproc_get_html_editor.php?site_id=' +BX.message('SITE_ID')+'&editor_id='+ wrapperId+'__n' +n+'_&field_name='+wrapperId+'[n'+n+']', onsuccess: function (HTML) { oCell.innerHTML = HTML; } }); }; var DragNDrop = new _DragNDrop(); }