/* exported standalone multipleSelection dragToolbar SetOnEditProp CopyPaste manageItems setProperties setProperties_ beginDragSelection dragShadow noDefaultDrag editPortlet OpenWindow CloseDialogs fade setFading disableSelect enableSelect addRulersLine togglePreview previewConfirmParms disableAnchor getDocHeight PickItems */ //Movimento Tool bar var container_selection = new Object(); //oggetto che circonda tutti gli elementi selezionati var not_selected = new Array(); //array di itemHTML non selezionati (� l'array dei loro indici) var undoSequence=new Array(); //array contenente tutti gli oggetti di Undo var dragObj=new Object(); dragObj.zOrder=1000; var standalone=false; var tool=null; var historyStack=null; var multipleSelection = false; var align_delta = 5; //indica la distanza massima tra due oggetti per far comparire le linee di allineamento var distance_delta = 10; //indica la distanza preferita tra gli oggetti del disegnatore (verra' impostata automaticamente dal disegnatore nel caso di vicinanza < di distance_sensor e >= di align delta var distance_sensor = 20; //indica la distanza entro la quale due oggetii si 'attraggono' var canAlign = false; var clVRRulersLib=null; var clHRRulersLib=null; var notimooManager; var undoItemsMoved=new Array(); var lockItems=false;//Blocca il move dei ctrls container_selection.e = new Array(); var container_align_h1,container_align_h2,container_align_v1,container_align_v2,container_align_mh,container_align_mv,distance_align_h1,distance_align_h2,distance_align_v1,distance_align_v2,container_distance_v1,container_distance_v2,container_distance_h1,container_distance_h2,shadow_selection;// eslint-disable-line max-len window.addEvent('domready',function(){ container_selection = new Element ('div',{id:'container_selection'}); notimooManager = new Notimoo({}); container_align_h1 = new Element ('div',{id:'container_align_h1'}).setStyles({'position':'absolute','z-index':4,'background-color':'#588644','height':'1px','width':'0px'}).grab(new Element('p')).inject(container_selection); container_align_h2 = new Element ('div',{id:'container_align_h2'}).setStyles({'position':'absolute','z-index':4,'background-color':'#588644','height':'1px','width':'0px'}).grab(new Element('p')).inject(container_selection); container_align_v1= new Element ('div',{id:'container_align_v1'}).setStyles({'position':'absolute','z-index':4,'background-color':'#588644','height':'0px','width':'1px'}).grab(new Element('p')).inject(container_selection); container_align_v2 = new Element ('div',{id:'container_align_v2'}).setStyles({'position':'absolute','z-index':4,'background-color':'#588644','height':'0px','width':'1px'}).grab(new Element('p')).inject(container_selection); container_align_mh = new Element ('div',{id:'container_align_mh'}).setStyles({'position':'absolute','z-index':4,'background':'transparent url(../portalstudio/images/align_h_dotted.png) repeat-y','height':'0px','width':'1px'}).grab(new Element('p')).inject(container_selection); container_align_mv = new Element ('div',{id:'container_align_mv'}).setStyles({'position':'absolute','z-index':4,'background':'transparent url(../portalstudio/images/align_v_dotted.png) repeat-x','height':'1px','width':'0px'}).grab(new Element('p')).inject(container_selection); distance_align_h1 = new Element ('div',{id:'distance_align_h1'}).setStyles({'position':'absolute','z-index':4,'background-color':'#588644','height':'1px','width':'0px'}).grab(new Element('p')).inject(container_selection); distance_align_h2 = new Element ('div',{id:'distance_align_h2'}).setStyles({'position':'absolute','z-index':4, 'background-color':'#588644','height':'1px','width':'0px'}).grab(new Element('p')).inject(container_selection); distance_align_v1= new Element ('div',{id:'distance_align_v1'}).setStyles({'position':'absolute','z-index':4,'background-color':'#588644','height':'0px','width':'1px'}).grab(new Element('p')).inject(container_selection); distance_align_v2 = new Element ('div',{id:'distance_align_v2'}).setStyles({'position':'absolute','z-index':4,'background-color':'#588644','height':'0px','width':'1px'}).grab(new Element('p')).inject(container_selection); container_distance_v1 = new Element('div',{id:'container_distance_v1'}).setStyles({'position':'absolute','z-index':4,'background-color':'#588644','height':'0px','width':'1px'}).grab(new Element('p')).inject(container_selection); container_distance_v2 = new Element('div',{id:'container_distance_v2'}).setStyles({'position':'absolute','z-index':4,'background-color':'#588644','height':'0px','width':'1px'}).grab(new Element('p')).inject(container_selection); container_distance_h1 = new Element('div',{id:'container_distance_h1'}).setStyles({'position':'absolute','z-index':4,'background-color':'#588644','height':'1px','width':'0px'}).grab(new Element('p')).inject(container_selection); container_distance_h2 = new Element('div',{id:'container_distance_h2'}).setStyles({'position':'absolute','z-index':4,'background-color':'#588644','height':'1px','width':'0px'}).grab(new Element('p')).inject(container_selection); shadow_selection = new Element ('div',{id:'shadow_selection'}).setStyles({'z-index':4}).grab(new Element('p')).inject(container_selection); if(Ctrl('backcanvas')) container_selection.inject(Ctrl('backcanvas')) else setTimeout(function(){container_selection.inject(Ctrl('backcanvas'))},300) }) PSAlert.init(window, ''); function dragToolbar(e,obj) { e = (e) ? e : window.event; obj = Ctrl(obj); if(obj) dragObj.css = obj.style; if(!e || !dragObj.css) return; //Save mousedown location //GM commentato /*dragObj.downX = (e.layerX) ? e.layerX : (e.offsetX) ? e.offsetX : 0; dragObj.downY = (e.layerY) ? e.layerY : (e.offsetY) ? e.offsetY : 0;*/ //GM //GM - IE9 e.layerY e e.layerX hanno valori non coerenti e spesso negativi - usargli solo se non esiste offsetX e offsetY dragObj.downX = (e.offsetX)? e.offsetX: (e.layerX)? e.layerX: 0;//(e.layerX)? e.layerX: (e.offsetX)? e.offsetX: 0; dragObj.downY = (e.offsetY)? e.offsetY: (e.layerY)? e.layerY: 0;//(e.layerY)? e.layerY: (e.offsetY)? e.offsetY: 0; //GM if(arguments.length > 2 && document.all){ dragObj.downX = dragObj.downX + arguments[2]; dragObj.downY = dragObj.downY + arguments[2]; } //Bring to top of stack dragObj.css.zIndex = ++dragObj.zOrder; document.id(document).addEvent("mousemove",dragStart,true); document.id(document).addEvent("mouseup",dragEnd,true); (new DOMEvent(e)).stop(); return false; } function dragStart(e) { e = (e)? e: window.event; var x = (e.pageX) ? e.pageX : (e.clientX) ? e.clientX + document.documentElement.scrollLeft + document.body.scrollLeft : 0; var y = (e.pageY) ? e.pageY : (e.clientY) ? e.clientY + document.documentElement.scrollTop + document.body.scrollTop : 0; //Move drag element by the amount the cursor has moved. var newX=(x-dragObj.downX); var newY=(y-dragObj.downY); if(newX<0) newX=0; if(newY<0) newY=0; dragObj.css.left=newX+"px"; dragObj.css.top=newY+"px"; if(e.preventDefault) e.preventDefault(); else return false; } function dragEnd(/*e*/) { //Stop capturing mousemove and mouseup events. document.id(document).removeEvent("mousemove",dragStart,true); document.id(document).removeEvent("mouseup",dragEnd,true) } var OnEditProp=false; function SetOnEditProp(b){ OnEditProp=b; } var deftmp=""; function CopyPaste(a,b) { //Usata in disegnatore standalone notimooManager.show({ title:'Notification message', message: (b) ? 'Item/s has been cutted' : ((!a) ? 'Item/s has been pasted' : 'Item/s has been copied'), sticky : false, visibleTime:1000, width:200, height:40 }); if(a){ if (window.Copy) deftmp=Copy(b); }else{ if (window.Paste) Paste(deftmp); } } function resetFormOperation(){ document.body.style.cursor="default"; type="Form"; selectForm(); } function manageItems(e,notResize){ var domevt = new DOMEvent(e); if(!OnEditProp){ var managed = false; var target = GetEventSrcElement(e); if (domevt.code==8 && target && target.tagName.toLowerCase() != "textarea") managed=true; else if(domevt.code==27) //ESC resetFormOperation(); else if(domevt.control && domevt.code==86) { (parent.CopyPaste?parent.CopyPaste(false):(window.CopyPaste?window.CopyPaste(false):void(0))); managed=true; }//CTRL-V else if (domevt.control && domevt.code==90) { Undo(); managed=true; }//CTRL-Z else if (domevt.control && domevt.code==89) { Redo(); managed=true; }//CTRL-Y else if (domevt.control && domevt.code==83) { (parent.saveTool?parent.saveTool():(window.save?save():void(0))); managed=true; }//CTRL-S else if(!Empty(mainitem)){ if (domevt.control && domevt.code==67) { (parent.CopyPaste?parent.CopyPaste(true,false):(window.CopyPaste?window.CopyPaste(true,false):void(0))); managed=true; }//CTRL-C else if (domevt.control && domevt.code==88) { (parent.CopyPaste?parent.CopyPaste(true,true):(window.CopyPaste?window.CopyPaste(true,true):void(0))); managed=true; }//CTRL-X else { switch(domevt.code){ case 46 : //DEL // gestionce canc su elemento missing var itm = itemsHTML[getItemsHTMLIndex(Strtran(mainitem.id,"shadow","item"))]; var msg; if(itm.isMissing){ var model = getModelFromZone(Strtran(itm.zone,"content","")).model; msg = "Do you want to remove whole " if(model=="table") msg+="column"; else msg+="row"; msg+="?"; showMessageConfirm(msg,"deletemissing",{alias:itm.fieldDet.alias, zone:Strtran(itm.zone,"content","")}); } else{ msg = 'Are you sure to remove elements? Only selected elements -not others related- will be removed!'; showMessageConfirm(msg,"delete"); } managed=true; break; case 38 : // UP deltax=0 deltay=0 newy=mainitem.offsetTop moveItems("up",e,notResize) managed=true; break case 39 : // RIGHT deltax=0 deltay=0 moveItems("right",e,notResize) managed=true; break case 40 : // DOWN deltax=0 deltay=0 moveItems("down",e,notResize) managed=true; break case 37 : // LEFT deltax=0 deltay=0 moveItems("left",e,notResize) managed=true; break } } EmptyRefLines(); addRulersLines(); } if (managed) domevt.stop(); } else { //si puo' salvare sempre anche dentro agli input!! if (domevt.control && domevt.code==83) { (parent.saveTool?parent.saveTool():(window.save?save():void(0))); domevt.stop(); }//CTRL-S } } var i_i=0 function setProperties(e){ if(!OnEditProp){ i_i++ if(index!=null) switch(GetKeyCode(e)){ case 38 : case 39 : case 40 : case 37 : setTimeout("setProperties_("+i_i+")",200) break } } } function setProperties_(i){ if(i==i_i){ Properties() if(typeof(drawLinks)!='undefined'){drawLinks(true);moveLinks();} } } function beginDragSelection(e){ if(typeof(hideProperties)!='undefined') hideProperties('properties') var dragstyle=Ctrl("drag").style var canvas=Ctrl("canvas") e = (e) ? e : window.event; var x = (e.pageX)? e.pageX: (e.clientX)? e.clientX: 0; var y = (e.pageY)? e.pageY: (e.clientY)? e.clientY: 0; if (document.all) { x += window.pageXOffset; y += window.pageYOffset; } x = x - (parseInt(Ctrl("backcanvas").offsetLeft) + parseInt(Ctrl("canvas").offsetLeft)) + parseInt(Ctrl("backcanvas").scrollLeft+document.body.scrollLeft) y = y - (parseInt(Ctrl("backcanvas").offsetTop) + parseInt(Ctrl("canvas").offsetTop)) + parseInt(Ctrl("backcanvas").scrollTop+document.body.scrollTop) dragstartx=x dragstarty=y // mostra il rettangolo di drag dragstyle.visibility="visible" dragstyle.top=y+'px'; dragstyle.left=x+'px'; dragstyle.width=0 dragstyle.height=0 // installa il gestore del mousemove canvas.onmousemove=continueDragSelection canvas.onmouseup=endDragSelection // blocca la propagazione cancelEvent(e) } function noDefaultDrag(e){ // blocca la propagazione e = (e) ? e : window.event; if(e.preventDefault)e.preventDefault() e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); e.returnValue=false } function continueDragSelection(e){ var dragstyle=Ctrl("drag").style e = (e) ? e : window.event; var x = (e.pageX)? e.pageX: (e.clientX)? e.clientX: 0; var y = (e.pageY)? e.pageY: (e.clientY)? e.clientY: 0; x = parseInt(x) - (parseInt(Ctrl("backcanvas").offsetLeft) + parseInt(Ctrl("canvas").offsetLeft)) + parseInt(Ctrl("backcanvas").scrollLeft+parseInt(Ctrl('canvas').scrollLeft)) y = parseInt(y) - (parseInt(Ctrl("backcanvas").offsetTop) + parseInt(Ctrl("canvas").offsetTop)) + parseInt(Ctrl("backcanvas").scrollTop+parseInt(Ctrl('canvas').scrollTop)) // muove il rettangolo di drag if (x 0){ //cerca il primo item attivo container_selection.e = new Array(); container_selection.l = Ctrl("backcanvas").offsetWidth; container_selection.t = Ctrl("backcanvas").offsetHeight; container_selection.b =0; container_selection.r=0; for(var i=0; i=0){ if(itm.style.display!='none') //esclude gli items di altre pagine if(itm.onclick && (itm.offsetTop>y && itm.offsetLeft>x && itm.offsetTop+itm.offsetHeight container_selection.b) container_selection.b= (itm.offsetTop+itm.offsetHeight) if((itm.offsetLeft+itm.offsetWidth) > container_selection.r) container_selection.r= (itm.offsetLeft+itm.offsetWidth) container_selection.e.push(i) }else{ if(!itmobj.hidden){ if(isScrolledIntoView(Ctrl(itemsHTML[i].id))) not_selected.push(i); } } } } container_selection.w = container_selection.r - container_selection.l; container_selection.h = container_selection.b-container_selection.t; } Ctrl("canvashandlers").innerHTML=Ctrl("canvashandlers").innerHTML+str; } function selectForm(){ removeAllHandlers() FormProperties() } function removeAllHandlers(){ // svuota l'array contenente gli elementi selezionati precedentemente index=null;mainitem=null; for(var i=0; i"; // if(navigator.appName.indexOf("Microsoft")>-1) // str+=""; // else str+=" "; str+=""; return str; } function addHandler(x,y,itmIdx,corner,fixed){ var cursorStyle = "" var moveControl = "" //itemresizable = (itemsHTML[index].type != "SPLinker" && itemsHTML[index].type != "SQLDataobj") if (!fixed){ if (corner == 0 || corner == 2) cursorStyle = "cursor:nw-resize;" else cursorStyle = "cursor:ne-resize;" moveControl = " onmousedown='beginDragHandler(event,"+itmIdx+","+corner+")'" } return "
" } // Crea la shadow dell'elemento per indicare che � in corso l'allineamento con quell'elemento function addShadowAlign(x,y,w,h,i,type){ // document.getElementById('bn').innerHTML =document.getElementById('bn').innerHTML + ' shadow x '+x+' y '+y+' w '+w+' h '+h; var str="
" return str; } // definisce l'elemento principale mainitem function selectItem(itm){ SetOnEditProp(false); var selecteditem,n,i mainitem=itm selecteditem=mainitem.id.substr(6); if(index==selecteditem)return; index=null; // trova lindice del mainitem for(i=0;i"+strp+"" } } } //funzione che disegna gli allineamenti e le ombre degli oggetti selezionati e ritorna un array con le posizioni ricalcolate function drawSnap(delta,resizeMode,light){ var dl = delta[0]; //spostamento del left var dt = delta[1]; //spostamento del top var dr = delta[2]; //spostamento del right var db = delta[3]; //spostamento del bottom var shadow_selected = "" var l_c = container_selection.l +dl var t_c =container_selection.t +dt var r_c = container_selection.r +dr var b_c = container_selection.b +db var h_c =container_selection.h - (dt - db) var w_c =container_selection.w -(dl - dr) var mh_c = l_c + (Math.round(w_c/2)); var mv_c = t_c + (Math.round(h_c / 2)); var v1_mod = false, v2_mod = false, h1_mod = false, h2_mod = false, dv1_mod = false, dv2_mod = false, dh1_mod = false, dh2_mod = false, mh_mod = false, mv_mod= false, isAlignWidth = false, isNearWidth = false; var isResizeMode = resizeMode; var tmp_sel,l_o,t_o,r_o,b_o,h_o,w_o,ddl,ddt,ddr,ddb; if(Empty(light)) light = false; for(var i=0;i b_o) ? b_c :b_o) - ((t_c <= t_o)?t_c :t_o) , h_c))+'px'; isAlignWidth =true; if(!v1_mod && !v2_mod) { //se e' stato spostata la shadow da altri allineamenti ddl = (mh_c - mh_o) l_c = l_c -ddl; r_c = r_c -ddl; } mh_mod=true; }else{ if(!mh_mod) container_align_mh.style.height=0; } if( !light && Math.abs(mv_c -mv_o) < align_delta && (!isResizeMode )) { //se c'� una corrispondenza tra i due assi centrali orizzontali container_align_mv.style.top = (mv_o)+'px'; container_align_mv.style.left = (l_c < l_o ? l_c : l_o)+'px'; container_align_mv.style.width = (Math.max(Math.abs( l_o > l_c ? (r_o - l_c) :(r_c - l_o)),w_c))+'px'; isAlignWidth =true; if(! h1_mod && !h2_mod){ ddt = (mv_c -mv_o) t_c = t_c -ddt; } mv_mod=true; }else{ if(!mv_mod) container_align_mv.style.width = 0; } //condizioni di avvicinamento if( (t_c - b_o) < distance_sensor && (t_c - b_o) >= align_delta && (!isResizeMode || dt != 0)) { //Avvicinamento vertice con il fondo dell'oggetto -|- distance_align_h2.style.width =(Math.max(Math.abs( l_o > l_c ? (r_o - l_c) :(r_c - l_o)),w_c))+'px'; distance_align_h2.style.left= (l_o >l_c ? l_c : l_o)+'px'; distance_align_h2.style.top=b_o+'px'; container_distance_v1.style.height = distance_delta+'px'; container_distance_v1.style.top = b_o+'px'; container_distance_v1.style.left =(l_c + (w_c/2))+'px'; ddt = t_c -(b_o + distance_delta) t_c = t_c -ddt dv1_mod=true; isNearWidth = true; }else{ if(!dv1_mod){ container_distance_v1.style.height = 0; distance_align_h2.style.width = 0; } } if( ( t_o - b_c) < distance_sensor && ( t_o -b_c) >= align_delta && (!isResizeMode || db!= 0)) { //Avvicinamento fondo con il vertice dell'oggetto _|_ distance_align_h1.style.width =(Math.max(Math.abs( l_o > l_c ? (r_o - l_c) :(r_c - l_o)),w_c))+'px'; distance_align_h1.style.left= (l_o >l_c ? l_c : l_o)+'px'; distance_align_h1.style.top=t_o+'px'; container_distance_v2.style.height = distance_delta+'px'; container_distance_v2.style.left =(l_c + (w_c/2))+'px'; ddb=(( t_o - distance_delta) - (b_c ))*(-1) b_c = b_c -ddb container_distance_v2.style.top = b_c+'px'; dv2_mod =true isNearWidth = true; }else{ if(!dv2_mod){ container_distance_v2.style.height = 0; distance_align_h1.style.width = 0; } } if((l_o - r_c ) < distance_sensor && ( l_o - r_c) >= align_delta && (!isResizeMode || dr != 0)){ //Avvicinamento destra con sinistra oggetto -> distance_align_v1.style.height = (Math.max((( b_c > b_o) ? b_c :b_o) - ((t_c <= t_o)?t_c :t_o) , h_c))+'px'; distance_align_v1.style.left=l_o+'px'; distance_align_v1.style.top= (t_c > t_o ? t_o : t_c)+'px'; container_distance_h1.style.width = distance_delta+'px'; container_distance_h1.style.top = (t_c + (h_c/2))+'px'; ddr = ( r_c +distance_delta) - l_o r_c = r_c -ddr; container_distance_h1.style.left = r_c+'px'; dh1_mod =true isNearWidth = true; }else{ if(!dh1_mod){ container_distance_h1.style.width = 0; distance_align_v1.style.height = 0; } } if(( l_c - r_o ) < distance_sensor && ( l_c - r_o) >= align_delta && (!isResizeMode || dl != 0)){ //Avvicinamento sinistra con destra oggetto <- distance_align_v2.style.height = (Math.max((( b_c > b_o) ? b_c :b_o) - ((t_c <= t_o)?t_c :t_o) , h_c))+'px'; distance_align_v2.style.left=r_o+'px'; distance_align_v2.style.top= (t_c >= t_o ? t_o : t_c)+'px'; container_distance_h2.style.width = distance_delta+'px'; container_distance_h2.style.left = r_o+'px'; container_distance_h2.style.top = (t_c + (h_c/2))+'px'; ddl = l_c - (r_o +distance_delta) l_c = l_c -ddl; dh2_mod =true isNearWidth = true; }else{ if(!dh2_mod){ container_distance_h2.style.width = 0; distance_align_v2.style.height = 0; } } dl=dl- (ddl +( isResizeMode ? 0 : ddr)); dt= dt -(ddt+ ( isResizeMode ? 0 :ddb)) dr = dr - (ddr +( isResizeMode ? 0 : ddl)); db = db -( ddb +( isResizeMode ? 0 :ddt)) if(isAlignWidth || isNearWidth) { var type if(isNearWidth) type = 'near' // css selected_shadow_near else type = 'align' //css selected_shadow_align shadow_selected += addShadowAlign(l_o,t_o,((w_o-2)>0?w_o-2:0),((h_o-2)>0?h_o-2:0),i,type) } isAlignWidth =isNearWidth = false; } container_selection.l += dl; container_selection.t += dt; container_selection.r += dr; container_selection.b += db; if(isResizeMode) container_selection.h = ((container_selection.h - (dt - db )) > 0 ? container_selection.h - (dt - db) : 0); if(isResizeMode)container_selection.w =container_selection.w - (dl - dr) > 0 ? container_selection.w - (dl - dr) :0; shadow_selection.innerHTML = shadow_selected; delta[0] = dl; delta[1]= dt; delta[2] = dr; delta[3] = db; return delta; //ritorna l'array con i nuovi spostamenti ricalcolati in base agli allineamenti e le vicinanze } function resetAlign(){ //tolgo gli allineamenti e le selected_shadow shadow_selection.innerHTML = "" container_align_h1.style.width = 0; container_align_h2.style.width = 0; container_align_v1.style.height = 0; container_align_v2.style.height = 0; container_align_mh.style.height=0; container_align_mv.style.width=0; distance_align_h1.style.width = 0; distance_align_h2.style.width = 0; distance_align_v1.style.height = 0; distance_align_v2.style.height = 0; container_distance_v1.style.height=0 container_distance_v2.style.height=0 container_distance_h1.style.width = 0; container_distance_h2.style.width = 0; } // sposta gli items nella posizione finale function setShadow(/*e*/) { if(!Empty(mainitem) && isMove){ resetAlign() Ctrl("canvas").onmousemove=null mainitem.onmouseup=null var o, kk, objmsg = []; for(kk=0; kk=0){ mainitem.style.display='none'; itemsHTML[getItemsHTMLIndex("item"+mainidx)].shadow=''; Ctrl("handler" + mainidx + "_4").style.display='none'; Ctrl("handler" + mainidx + "_5").style.display='none'; Ctrl("handler" + mainidx + "_6").style.display='none'; Ctrl("handler" + mainidx + "_7").style.display='none'; Ctrl("handlersWrapper"+mainidx).style.display='none'; Ctrl("canvashandlers").removeChild(Ctrl("shadow"+mainidx)); Ctrl("canvashandlers").removeChild(Ctrl("handlersWrapper"+mainidx)); container_selection.e.splice(container_selection.e.indexOf(parseInt(mainidx)),1); return; } } isMove = false; objmsg = []; o = null; } // si spostano tutti gli elementi selezionati nella posizione finale di unmouseup //MODIFICA: INSERIMENTO DELLE GUIDE DI ALLINEAMENTO E DELLA VISUALIZZAZIONE DELLA POSIZIONE function moveItems(dir,e,notResize) { m_bUpdated=true; var canResize = notResize ? notResize : false; var action = (e != null && (e.shiftKey || e.ctrlKey) ? 'resize' : 'move') //var isResizing=(e!=null && (e.shiftKey==true || e.ctrlKey==true)); var n,elementShadow,elementtomove,element_tmp; var dx= 0,dy= 0,dw= 0,dh= 0, sc= 1 //var undoItemsMoved=new Array() if(window.pushToHistory) window.pushToHistory(); for (var p=0;p0) undoItemsMoved=[]; undoItemsMoved[undoItemsMoved.length]=new ZTObjects.undoObj('item'+element_tmp.shadow.substr(6),action,elementShadow.offsetLeft,elementShadow.offsetTop,elementtomove.offsetLeft,elementtomove.offsetTop, element_tmp,elementShadow.offsetWidth,elementShadow.offsetHeight,elementtomove.offsetWidth,elementtomove.offsetHeight); indexUndo++ undoSequence[indexUndo]=undoItemsMoved CheckUndoSize() } undoItemsMoved[undoItemsMoved.length-1].dir = dir ; if(e!= null){ undoItemsMoved[undoItemsMoved.length-1].shiftKey = e.shiftKey ; undoItemsMoved[undoItemsMoved.length-1].ctrlKey = e.ctrlKey ; } }else{ if(undoItemsMoved && undoItemsMoved[undoItemsMoved.length-1]) undoItemsMoved[undoItemsMoved.length-1].dir = ''; } if(Empty(dir) && typeof(ZTPlanObjects)!='undefined') undoItemsMoved[undoItemsMoved.length]=new ZTPlanObjects.undoObj('item'+element_tmp.shadow.substr(6),'move',elementShadow.offsetLeft,elementShadow.offsetTop,elementtomove.offsetLeft,elementtomove.offsetTop, element_tmp); // } if(window.AdjustMove) window.AdjustMove(element_tmp); elementtomove.style.width=(getOffset(elementtomove).w +dw)+'px'; elementtomove.style.height=(getOffset(elementtomove).h +dh)+'px'; elementtomove.style.top=(elementShadow.offsetTop)+'px'; //Spostamento dell'elemento che segue la shadow elementtomove.style.left=(elementShadow.offsetLeft)+'px';//Spostamento dell'elemento che segue la shadow //salvo nell'oggetto item la posizione corrente if(e!=null && e.shiftKey==true && e.ctrlKey==true){ element_tmp.w=elementShadow.offsetWidth element_tmp.h=elementShadow.offsetHeight element_tmp.x=elementShadow.offsetLeft element_tmp.y=elementShadow.offsetTop }else if(e!=null && e.shiftKey==true){ element_tmp.w=elementShadow.offsetWidth element_tmp.h=elementShadow.offsetHeight }else{ element_tmp.x=elementShadow.offsetLeft element_tmp.y=elementShadow.offsetTop } if(window.setRelativeTop) window.setRelativeTop(element_tmp,elementtomove); if(Ctrl("handlersWrapper"+n)){ var w=elementShadow.offsetWidth var h=elementShadow.offsetHeight var shadowH = ((h-2)>0 ? h-2 : 0 ) +8; //tolgo i due pixel dei bordi var shadowW = ((w-2 )>0 ? w-2 : 0 ) +8; //tolgo i 2 pixel dei bordi Ctrl("handlersWrapper"+n).style.top = (elementShadow.offsetTop-9) +'px'; Ctrl("handlersWrapper"+n).style.left = (elementShadow.offsetLeft-9)+'px'; Ctrl("handlersWrapper"+n).style.height = (shadowH+12)+'px' Ctrl("handlersWrapper"+n).style.width = (shadowW+12)+'px' if(Ctrl("handler"+n+"_4")){ Ctrl("handler"+n+"_5").style.top = ((shadowH+4)/2)+'px'; //bordi Ctrl("handler"+n+"_6").style.top = ((shadowH+12)-16)+'px'; //posizionamento relativo (16 = (size+2)*2) Ctrl("handler"+n+"_7").style.top = ((shadowH+4)/2)+'px'; } } //GM compatibilit� vecchio comportamento - reporteditor else{ Ctrl("handler"+n+"_0").style.left = (elementShadow.offsetLeft-3)+'px'; Ctrl("handler"+n+"_0").style.top = (elementShadow.offsetTop-3)+'px'; Ctrl("handler"+n+"_1").style.left = (elementShadow.offsetLeft+elementShadow.offsetWidth-6)+'px'; Ctrl("handler"+n+"_1").style.top = (elementShadow.offsetTop-3)+'px'; Ctrl("handler"+n+"_2").style.left = (elementShadow.offsetLeft+elementShadow.offsetWidth-6)+'px'; Ctrl("handler"+n+"_2").style.top = (elementShadow.offsetTop+elementShadow.offsetHeight-6)+'px'; Ctrl("handler"+n+"_3").style.left =( elementShadow.offsetLeft-3)+'px'; Ctrl("handler"+n+"_3").style.top = (elementShadow.offsetTop+elementShadow.offsetHeight-6)+'px'; if(Ctrl("handler"+n+"_4")){ Ctrl("handler"+n+"_4").style.left = (elementShadow.offsetLeft-3+elementShadow.offsetWidth/2)+'px'; Ctrl("handler"+n+"_4").style.top = (elementShadow.offsetTop+elementShadow.offsetHeight-6)+'px'; Ctrl("handler"+n+"_6").style.left = (elementShadow.offsetLeft-3+elementShadow.offsetWidth/2)+'px'; Ctrl("handler"+n+"_6").style.top = (elementShadow.offsetTop-3)+'px'; Ctrl("handler"+n+"_5").style.left = (elementShadow.offsetLeft-3)+'px'; Ctrl("handler"+n+"_5").style.top = (elementShadow.offsetTop+elementShadow.offsetHeight/2-3)+'px'; Ctrl("handler"+n+"_7").style.left = (elementShadow.offsetLeft+elementShadow.offsetWidth-6)+'px'; Ctrl("handler"+n+"_7").style.top = (elementShadow.offsetTop+elementShadow.offsetHeight/2-3)+'px'; } } } else if(element_tmp.shadow !="" && window.moveSection) window.moveSection(dir, element_tmp.shadow, p) } if(Empty(dir) && undoItemsMoved.length>0){ indexUndo++; undoSequence[indexUndo]=undoItemsMoved; CheckUndoSize(); undoItemsMoved=[]; } if(window.pushToHistory) window.pushToHistory(); } var indexUndo=-1; var indexRedo=-1; function Undo() { if(historyStack){ if(historyStack.hasUndo() && window.undoFromHistory) window.undoFromHistory(); if(window.updateFieldsPane) window.updateFieldsPane(); return; } var l, ll, p, idx; if(indexUndo>-1){ var prevUndo=undoSequence[indexUndo] // sequenza prev if(prevUndo[0].action=='move'){ for (l=0;l=0){ itemsHTML.splice(idx,1); } } } indexRedo=indexUndo; indexUndo--; writeHTML(true); } } function Redo() { if(historyStack){ if(historyStack.hasRedo() && window.redoFromHistory) window.redoFromHistory(); return; } var l, p, ll; if((indexRedo>-1) && (indexRedo < undoSequence.length)){ var seqRedo=undoSequence[indexRedo] // sequenza prev if(seqRedo[0].action=='move'){ for (l=0;l=0){ itemsHTML.splice(idx,1); countindex--; } } index=null; } else if(seqRedo[0].action=='paste'){ for (ll=0;llmaxUndoLength){ var tmp=new Array(); var tmpn=0; for (var tt=0;tt0){ tmp[tmpn]=undoSequence[tt]; tmpn++; } } undoSequence=tmp; indexUndo=tmpn-1; } } function editPortlet(e,url){ e.cancelBubble=true if(url.indexOf("_portlet.jsp")>-1){ url=Strtran(url,"_portlet.jsp","") if(parent.newCurrentObj) parent.newCurrentObj(url,"portlet",{}); else windowOpenForeground('../visualweb/editor.htm?id='+url,'','status=1,directories=0,width=800px,height=600px,top=0,left=0,resizable=1,scrollbars=1'); } } function OpenWindow(url,width,height,left,top,features,title){ window.setTimeout("document.body.onfocus=CloseDialogs",500); if(features!=null) features=","+features; else features=""; return window.open(url,title,"width="+width+",height="+height+",left="+left+",top="+top+",status=yes,help=no"+features); } function CloseDialogs(){ try{ if(WinOpener) WinOpener.close(); document.body.onfocus = null; }catch(e){ // } } //funzioni cambiamento opacita div var fadestr; function fadeOut(init,final,id,step,ms,strToEval){ if(typeof(strToEval)!='undefined') fadestr=strToEval; var oDiv = document.getElementById(id); if(init-1){//MS, quindi alpha filter oDiv.style.filter="alpha(opacity='"+parseInt(final*100)+"')"; }else{ if(oDiv.style.MozOpacity) oDiv.style.MozOpacity = final; oDiv.style.opacity = final; } oDiv.style.zIndex='102' oDiv.style.display="none"; if(!Empty(fadestr))eval(fadestr); return; } if(navigator.appName.indexOf("Microsoft")>-1){//MS, quindi alpha filter oDiv.style.filter="alpha(opacity='"+parseInt(init*100)+"')"; }else{ if(oDiv.style.MozOpacity) oDiv.style.MozOpacity = init; oDiv.style.opacity = init; } setTimeout("fadeOut("+parseFloat(init-step)+","+final+",'"+id+"',"+step+","+ms+")",ms); } function fadeIn(init,final,id,step,ms,strToEval){ if(typeof(strToEval)!='undefined') fadestr=strToEval; var oDiv = document.getElementById(id); if(init>final){ if(navigator.appName.indexOf("Microsoft")>-1){//MS, quindi alpha filter oDiv.style.filter="alpha(opacity='"+parseInt(final*100)+"')"; }else{ if(oDiv.style.MozOpacity) oDiv.style.MozOpacity = final; oDiv.style.opacity = final; } if(!Empty(fadestr))eval(fadestr); return; } oDiv.style.visibility="visible"; if(navigator.appName.indexOf("Microsoft")>-1){//MS, quindi alpha filter oDiv.style.filter="alpha(opacity='"+parseInt(init*100)+"')"; }else{ if(oDiv.style.MozOpacity) oDiv.style.MozOpacity = init; oDiv.style.opacity = init; } setTimeout("fadeIn("+parseFloat(init+step)+","+final+",'"+id+"',"+step+","+ms+")",ms); } function fade(start,end,step,ms,cId,_in,str){ var oDiv = document.getElementById(cId); if(_in){ oDiv.style.visibility="hidden"; fadeIn(start,end,cId,step,ms,str); }else{ fadeOut(start,end,cId,step,ms,str); } } /*var PSAlert=new function(){ this.t=null; return { alert: function(m,t){ // tempo in secondi var w=this.main; var d=this.main.document; var b; if(Ctrl("PSAlert")){ b = Ctrl("PSAlert"); b.style.display='block'; setOpacity(b,0.8); }else{ b=d.createElement('div'); b.id='PSAlert'; // insert in to body b=d.body.insertBefore(b,d.body.firstChild); b.className='notimoo'; b.style.cssText='position:absolute;'; b.style.textAlign='center'; b.style.width='20%'; b.style.marginLeft='40%'; b.style.marginRight='40%'; b.style.top='300px'; b.style.zIndex='1001'; setOpacity(b,0.8); // classname not passed, set defaults if(b.className.length==0){ b.style.padding='8px 8px'; b.style.border='1px solid #888888'; b.style.backgroundColor='#FFFFFF'; b.style.fontFamily='lucida grande,Verdana,taohma'; b.style.fontWeight='bold'; b.style.color='#888888'; b.style.fontSize='12px'; b.style.lineHeight='24px'; b.style.display='block'; } } // write HTML fragment to it b.innerHTML="
"; b.innerHTML+="
"+m+"
"; // fadeout block if supported this.b=b; if(this.t)clearTimeout(this.t); if(FadingId)clearInterval(FadingId); if (typeof(t)!='number') t = 2000; else t = t * 1000; this.t=setTimeout("setFading(PSAlert.b,80,0,700,'function(){PSAlert.main.document.body.removeChild(PSAlert.b);}')",t); } , init: function(w,s){ // save window this.main=w; this.classname=s||''; } // shutdown Alert object }; };*/ // apply a fading effect to an object // by applying changes to its style // @o = object style // @b = begin opacity // @e = end opacity // @d = duration (millisec) // @f = function (optional) var FadingId=null; function setFading(o,b,e,d,f){ //setOpacity(o,0); FadingId=setInterval( function(){ b=stepFX(b,e,2); setOpacity(o,b/100); if(b==e){ if(FadingId){clearInterval(FadingId);FadingId=null;} if(typeof f=='function'){f();} o.style.display='none'; } },d/50 ); } // set opacity for element // @e element // @o opacity function setOpacity(e,o){ // for IE e.style.filter='alpha(opacity='+o*100+')'; // for others e.style.opacity=o; } // increment/decrement value in steps // checking for begin and end limits //@b begin //@e end //@s step function stepFX(b,e,s){ return b>e?b-s>e?b-s:e:b-1){ i_preview.src=currentname+'_portlet.jsp?m_NoCache='+LibJavascript.AlfaKeyGen(10)+pUrl; }else{ i_preview.src='../jsp/'+currentname+'_portlet.jsp?m_NoCache='+LibJavascript.AlfaKeyGen(10)+pUrl; } break; case 'report': if(reportPreview) reportPreview(); break; case 'module': i_preview.src='../servlet/JSPModEditorPrev?name='+currentname+'&m_NoCache='+LibJavascript.AlfaKeyGen(10); break; case 'scandoc': if(scanPreview) scanPreview(); break; case 'portalzoom': i_preview.src = GetResourceName(pUrl); break; case 'pageleteditor': i_preview.src = GetResourceName(); break; case 'maskparameters': if (maskPreview) maskPreview(); break; case 'chart': if (chartPreview) chartPreview(pUrl); break; } btn_preview.getFirst().setStyle('background-image','url(../portalstudio/images/icon/btn_preview_off.png)'); btn_preview.title='Back to Edit'; morphP.start({'left':(window.getWrapperLeft?window.getWrapperLeft():0)}); preview_opened=true; // document.getElementById('objList').getChildren().each(function(el){ // var a = el.getElement('a'); // if( !a || (a && a.id != 'btn_preview') ){ // el.set('morph') // el.morph({'opacity':0.2}) // disableAnchor(a, true); // } // }) document.getElementById('formproperties').set('morph') document.getElementById('formproperties').morph({'opacity':0.2}) }else{ btn_preview.getFirst().setStyle('background-image','url(../portalstudio/images/icon/btn_preview.png)'); morphP.start({'left': window.getSize().x}).chain(function (){i_preview_wrapper.setStyle('display','none');}); btn_preview.title='Go to Preview'; switch(tool){ case 'scandoc': if(scanPreview) scanPreview(); break; case 'chart': if (chartPreview) chartPreview(pUrl); break; } preview_opened=false; // document.getElementById('objList').getChildren().each(function(el){ // var a = el.getElement('a'); // if( !a || (a && a.id != 'btn_preview') ){ // el.set('morph') // el.morph({'opacity':1}) // disableAnchor(a, false); // } // }) document.getElementById('formproperties').morph({'opacity':1}) } if(window.setToolbars) window.setToolbars() } if (typeof(ZtVWeb)!='undefined') { var params_opened=false; var portlet_fake=new function(){ ZtVWeb.newForm(this,'portlet_fake','params_receiver',400,200,'portlet'); this.parametersList_confirm=new ZtVWeb.EventReceiverCtrl(this,'parametersList_confirm','parametersObj','previewConfirmParms(evt.parametersObj)','','func'); this.parametersList_discard=new ZtVWeb.EventReceiverCtrl(this,'parametersList_discard','parametersObj','toggleParameters()','','func'); } ZtVWeb.addPortletObj('portlet_fake','params_receiver',portlet_fake); portlet_fake.on_parametersList_confirm=function(parmsObj){portlet_fake.parametersList_confirm.receiveFnc(parmsObj);} portlet_fake.on_parametersList_discard=function(parmsObj){portlet_fake.parametersList_discard.receiveFnc(parmsObj);} var pObj={}; var pValues=null; var pUrl=''; function previewConfirmParms(obj){ pUrl=''; pValues=obj; for(var i in pValues){ pUrl+='&'+i; pUrl+='='+ZtVWeb.valueToStr(pValues[i]); } toggleParameters(); } function toggleParameters(){ var parameters_wrapper=document.getElementById("parameters_wrapper"); if(!params_opened){ SetOnEditProp(false); parameters_wrapper.setStyle('opacity',0); parameters_wrapper.setStyle('display','block'); parameters_wrapper.set('tween', {duration: '300'}); parameters_wrapper.tween('opacity', 0, 1); var curr_request_parms = GetRequestParams(); //Oggetto nome -> [{description, type, len, dec, group} | tipo ] var i; if (typeof(curr_request_parms)=='string' && Lower(Right(curr_request_parms,4))=='.vdm'){ var projectUrl = new JSURL("../servlet/SPVDMProxy?m_cAction=load&m_cConfigName="+Left(curr_request_parms,Len(curr_request_parms)-4), true); var myResponse = projectUrl.Response(); pObj = JSON.parse(myResponse); pObj.onOkResource=GetResourceName(''); if (skinList){ var found=false; for (i=0; i0){ itm.style.display='none'; itemsHTML[indexz].shadow=''; Ctrl("handler" + unselecteditem + "_0").style.display='none'; Ctrl("handler" + unselecteditem + "_1").style.display='none'; Ctrl("handler" + unselecteditem + "_2").style.display='none'; Ctrl("handler" + unselecteditem + "_3").style.display='none'; Ctrl("canvashandlers").removeChild(itm); if(mainitem && mainitem.id==mainitemz.id){ for (i = 0; i < itemsHTML.length; i++) { if (itemsHTML[i].shadow && Ctrl(itemsHTML[i].shadow)){ return selectItem(Ctrl(itemsHTML[i].shadow)); } } removeAllHandlers(); } } } function PickItems(tool,retTo,top, left, width, height){ var offlinemode=''; var ind=(GetOpener()? GetOpener().index : index); var itemsH=(GetOpener()?GetOpener().itemsHTML : itemsHTML); if(ind!=null && itemsH[ind].offline=='true') offlinemode="&offlinemode=true"; //openSPModalLayer("../portalstudio/open.jsp?tool="+tool+"&onetool=true&ExpressionID="+retTo+"&callerFunction=ExpressionBuilderReturn&SPModalLayerId=querySPModalLayer"+offlinemode, t, l, width, height, true, 1, false, false); window.layerOpenForeground("../portalstudio/open.jsp?tool="+tool+"&onetool=true&ExpressionID="+retTo+"&callerFunction=ExpressionBuilderReturn&SPModalLayerId="+tool+"SPModalLayer"+offlinemode,"Select "+tool,'',width,height,true,1); } // overwrite PortalCommonsJS var currentAPIClass = null; var currentAPIType = ""; function renderApi(obj /*itemsHTML object*/) { currentAPIClass = null; currentAPIType = ""; if(obj && obj.objClass) { currentAPIClass = obj.objClass; currentAPIType = obj.type; openSPComponentAPI(); } } function openSPComponentAPI() { var pws = window.GetWindowSize(); window.layerOpenForeground("../jsp-system/SPComponentAPI.jsp", "", "", pws.w, pws.h, true, 1); } function getRenderApiObjClass() { return { apiType : currentAPIType, apiObj : currentAPIClass, ovr_tabs: true }; } var apiSamples = {}; function getComponentSamples(apiType) { return apiSamples[apiType]; } function setComponentSamples(apiType, samples) { return apiSamples[apiType] = samples; } function renderApiForm() { if (formProp) { var obj = makeAPIobj(formProp, true); renderApi(obj); } } function renderApiElement() { if (index != null) { var element = itemsHTML[index]; if (element && element.objClass) { console.log(element, element.type, element.typeView) var obj = makeAPIobj(element); renderApi(obj) } } } function makeAPIobj(org_obj, isForm) { var obj = { type: org_obj.type, objClass: { newProperties: {} } }, general = org_obj.objClass.newProperties, props; if (org_obj.objClass._api) { if (isForm) { for (props in org_obj.objClass._api) { addProp(props); } } else { props = org_obj.typeView; addProp(props); if (props == "text" || props == "numeric" || props == "datetime" || props == "pagenum") obj.objClass.newProperties.font = general.font; } } else obj.objClass.newProperties = general; return obj; function addProp(props) { var pobj = org_obj.objClass._api[props]; if (!pobj && general[props]) obj.objClass.newProperties[props] = general[props]; else { if (pobj == "all") { obj.objClass.newProperties[props] = general[props]; } else { if (pobj in general) { // tab con altro nome obj.objClass.newProperties[props] = general[pobj]; } else if (pobj.length > 0 && pobj[0].name) { // array con props obj.objClass.newProperties[props] = pobj.slice(); } else if (pobj.length > 0) { // array con propID specificati obj.objClass.newProperties[props] = []; for (var i = 0; i < general[props].length; i++) { if (pobj.indexOf(general[props][i].propID) >= 0) obj.objClass.newProperties[props].push(general[props][i]); } } } } } }