PortaleOrdiniGruppo/PortalStudio/planeditor/plan.js
2025-03-24 15:28:26 +01:00

1881 lines
67 KiB
JavaScript

/* exported
doLoad openedPageletName Help editItemEvent clickItem beginDragHandler noDefaultDrag PreviewCheck addItem
ShowResources saveAsModel checkLinkable startSelectLink
alignItems setShadow selectItemByName togglepagetbar openRes selectLink findItem updateLinksName deleteLink
Copy Paste setJDEF getJDEF
*/
/* exported
openedPagelet openedPageletName links deltax deltay dx dy
*/
var currentname = ""; //nome del portlet corrente
var InitialPagesList = []; //Lista degli Item iniziali al load
var linking = false; //var per vedere se sono in modalita add link
var m_nFrontendPort = null;
var nitem = 0;
var openedPagelet = false;
var openedPageletName = '';
var plan_resize;
function checkMargins(setPropDiv) {
var plan_min_height = 30;
var plan_min_width = 250;
for(var i = 0; i < itemsHTML.length; i++) {
var elem = itemsHTML[i];
var itmX = parseInt(elem.x) + 110;
var itmY = parseInt(elem.y) + parseInt(document.getElementById(elem.id).offsetHeight) + 30;
plan_min_height = (itmY > plan_min_height) ? itmY : plan_min_height;
plan_min_width = (itmX > plan_min_width) ? itmX : plan_min_width;
}
if(Empty(plan_resize)) {
plan_resize = document.getElementById('backcanvas').makeResizable({
handle: document.getElementById('handler'),
//limit: {x: [800], y: [600]},
onComplete: function () {
formProp.height = document.getElementById('backcanvas').offsetHeight;
formProp.width = document.getElementById('backcanvas').offsetWidth;
if(!Empty(document.getElementById('properties').getElement('.form_width')) && !Empty(document.getElementById('properties').getElement('.form_height'))) {
document.getElementById('properties').getElement('.form_width').set('value', formProp.width);
document.getElementById('properties').getElement('.form_height').set('value', formProp.height);
}
document.getElementById('canvaslinks').setStyles({
'height': document.getElementById('canvas').offsetHeight,
'width': document.getElementById('canvas').offsetWidth
});
document.getElementById('canvas_showlink').setStyles({
'height': document.getElementById('canvas').offsetHeight,
'width': document.getElementById('canvas').offsetWidth
});
}
});
}
if(setPropDiv)
document.getElementById('properties').setStyle('left', parseInt(plan_min_width + 30));
plan_resize.setOptions({
limit: {
x: [plan_min_width],
y: [plan_min_height]
}
});
}
function doLoad(e, id, mode, frontendport) {
initPainter();
if(!Empty(frontendport)) {
m_nFrontendPort = frontendport;
}
var toolbars = {};
toolbars.align = new SPToolbar(ZTPlanObjects.PSToolbarAlign, 'sptoolbar_align', {
elementToShow: 'all'
});
toolbars.action = new SPToolbar(ZTPlanObjects.PSToolbarAction, 'sptoolbar_action', {
elementToShow: 'all'
});
var fnToDelay = function () {
AppletTag("Batch");
BatchApplet().documentloc = Strtran(location.toString(), "visualweb/editor.jsp", "servlet/dummy");
document.body.style.cursor = "default";
document.body.onhelp = CancelHelp;
if(!Empty(id) || c_ripristino || window.frameElement?.jdef) {
currentname = id;
reload(e);
if(Ctrl("srcform")) Ctrl("srcform").value = currentname;
}
try {
parent.setTitle(this);
} catch(e) {
document.title = currentname + " - Plan Editor";
//do nothing
}
if(mode == 'tosave') currentname = '';
document.getElementById('loading').fade(0);
try {
if(window.frameElement != null && typeof(parent.resizeIframe) != "undefined") {
parent.resizeIframe(window.frameElement);
}
} catch (e) {}
};
fnToDelay.delay(2000);
}
function Help(the_property) {
var i;
var prop = '';
if(typeof (anchorToFeature) != 'undefined') {
if(typeof (the_property) != 'undefined')
prop += "planeditor_" + the_property.toLowerCase();
if(prop in anchorToFeature && prop != '')
i = anchorToFeature[prop];
else if(index != null && "planeditor_" + itemsHTML[index].type.toLowerCase() in anchorToFeature)
i = anchorToFeature["planeditor_" + itemsHTML[index].type.toLowerCase()];
else
i = anchorToFeature.planeditor;
windowOpenForeground(m_cHelpUrl + 'help/portalstudio/ps_urg_navigator.htm?' + URLenc( i + (prop != "" ? '||' + prop : "")), '', 'toolbar=0,menubar=0,directories=0,width=720,height=600,resizable=1,scrollbars=1');
}
}
var ActionCodeLayer;
var codeOpen = false;
function editItemEvent() {
var z_ac_style = localStorage.getItem('zucchetti_ac_style');
var ac_style = !Empty(z_ac_style) ? JSON.parse(z_ac_style) : {};
ac_style.height = (!Empty(ac_style) && !Empty(ac_style.height) ? ac_style.height : 600);
ac_style.width = (!Empty(ac_style) && !Empty(ac_style.width) ? ac_style.width : 880);
ac_style.maximized = (!Empty(ac_style) && typeof (ac_style.maximized) != 'undefined' ? ac_style.maximized : false);
localStorage.setItem('zucchetti_ac_style', JSON.encode(ac_style));
ActionCodeLayer = new spModalLayer('editItemEvent.htm', {
'in_iframe': true,
'draggable': true,
'width': ac_style.width,
'height': ac_style.height,
'resizable': true,
'border_color': '#CCCCCC',
'border_width': 1,
'dragger_height': 12,
'dragger_image': 'images/ps-editor-drag.png',
'mask_opacity': 0.4,
'mask_color': '#CCCCCC',
'show_scrollbars': false,
'close_on_click_mask': '',
'iframe_padding': 0,
'hide_close_btn': true,
'maximize': true,
'maximized': ac_style.maximized,
'opener':window
});
ActionCodeLayer.open();
codeOpen = true;
}
function beginDragHandler() {}
function noDefaultDrag() {
//blocca la propagazione
event.cancelBubble = true;
event.returnValue = false;
}
function beginDragSelection(e) { //REDEFINED
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").style.left);
y = y - parseInt(Ctrl("backcanvas").style.top);
dragstartx = x;
dragstarty = y;
// mostra il rettangolo di drag
// document.getElementById('drag').set('tween', {duration: '100'});
// document.getElementById('dragcontent').set('tween', {duration: '100'});
// document.getElementById('drag').tween('opacity', 0, 0.6);
// document.getElementById('dragcontent').tween('opacity', 0, 0.2);
dragstyle.visibility = "";
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 endDragSelection(e) { //REDEFINED
var drag = Ctrl("drag");
if(drag.offsetWidth <= 2 && drag.offsetHeight <= 2) {
selectForm();
} else {
findDragItems(e, drag.offsetTop, drag.offsetLeft, drag.offsetWidth, drag.offsetHeight);
}
//seleziona l elemento se ci sono elementi nell'area scelta
for(var i = 0; i < itemsHTML.length; i++) {
if(itemsHTML[i].shadow != "") {
selectItem(Ctrl(itemsHTML[i].shadow));
break;
}
}
// nasconde il rettangolo di drag
// document.getElementById('drag').set('tween', {
// duration: '200'
// });
// document.getElementById('dragcontent').set('tween', {
// duration: '200'
// });
document.getElementById('drag').tween('opacity', document.getElementById('drag').getStyle('opacity'), 0);
document.getElementById('dragcontent').tween('opacity', document.getElementById('dragcontent').getStyle('opacity'), 0);
drag.setStyle('visibility', 'hidden');
Ctrl("canvas").onmousemove = null;
Ctrl("canvas").onmouseup = null;
if(typeof (showProperties) != 'undefined') showProperties('properties');
//refreshToolTips();
}
function addHandler(x, y, itmIdx, corner, fixed) {
var cursorStyle = "";
var moveControl = "";
if(!fixed) {
if(corner == 0 || corner == 2)
cursorStyle = "cursor:nw-resize;";
else
cursorStyle = "cursor:ne-resize;";
moveControl = " onmousedown='beginDragHandler(event," + itmIdx + "," + corner + ")'";
}
return "<div id='handler" + itmIdx + "_" + corner + "' style='" + cursorStyle + "z-index:120;display:none;position:absolute;top:" + y + "px;left:" + x + "px;width:7px;height:7px;background:url(../visualweb/images/handler_on.png);'" + moveControl + "><p></p></div>";
}
//REDEFINED
function addHandlers(itmIdx) {
var itm = Ctrl("item" + itmIdx);
var itmtitle = '';
for(var i = 0; i < itemsHTML.length; i++) {
if(itemsHTML[i].id == "item" + itmIdx) {
itmtitle = itemsHTML[i].title;
mainitem = itemsHTML[i];
}
}
var y = itm.offsetTop;
var x = itm.offsetLeft;
var w = itm.offsetWidth;
var h = itm.offsetHeight;
var str = "";
str += addHandler(x - 3, y - 3, itmIdx, 0, true);
str += addHandler(x - 3 + w, y - 3, itmIdx, 1, true);
str += addHandler(x - 3 + w, y - 3 + h, itmIdx, 2, true);
str += addHandler(x - 3, y - 3 + h, itmIdx, 3, true);
if(mainitem.type != 'Link') {
document.getElementById("item" + itmIdx).addClass('selected');
document.getElementById("item" + itmIdx).setAttribute("selected", "");
}
// aggiunge il div shadow+n della grandezza dell item per lo spostamento
str += "<div id='shadow" + itmIdx + "' tabindex='-1' class='shadow' title='" + itmtitle + ' [' + itm.name + ']' + "' style='" + ((mainitem.type == 'Link' ? "display:none;" : "")) + "top:" + y + "px;left:" + x + "px;'" +
"onmousedown='this.focus();dragShadow(event);' ondblclick='cancelEvent(event);openResource(event," + itmIdx + ",\"" + itm.id + "\",\"" + itm.title + "\")'>";
str += "&nbsp;";
str += "</div>";
return str;
}
//seleziona l'item se cliccato
function clickItem(e, id_container) {
var itmNr = id_container.substr(4),itm;
if(index != null && mainitem && (mainitem.id == "shadow" + itmNr)) {
return;
} else {
if(!linking) {
var selectedItems = document.querySelectorAll(".item.selected");
resetItems();
document.getElementById(id_container).addClass('selected');
document.getElementById(id_container).setAttribute("selected", "");
var i, str = "";
var element = GetEventSrcElement(e);
if(e.ctrlKey == false) {
removeAllHandlers();
} else {
for (i = 0; i < selectedItems.length; i++) {
selectedItems[i].addClass('selected');
selectedItems[i].setAttribute("selected", "");
}
}
if(element.id != id_container || !element.id) {
while(element.parentNode.id != id_container) {
element = element.parentNode;
}
element = element.parentNode;
}
str = addHandlers(element.id.substr(4));
for(i = 0; i < itemsHTML.length; i++) {
if(itemsHTML[i].id == element.id) {
itemsHTML[i].shadow = "shadow" + element.id.substr(4);
}
}
Ctrl("canvashandlers").innerHTML = Ctrl("canvashandlers").innerHTML + str;
selectItem(Ctrl("shadow" + element.id.substr(4)));
itm = itemsHTML[index];
} else {
setLink(id_container);
}
}
for(var p = 0; p < itemsHTML.length; p++) {
// rendo visibili le icone dei link figli
if(itemsHTML[p].type=='Link' && (itemsHTML[p].from == itm.name || itemsHTML[p].from == itm.alias)) {
document.getElementById(itemsHTML[p].id).classList.add("visible");
}
}
}
function PreviewCheck(e/*, id_container*/) {
e.cancelBubble = true;
//clickItem(e,id_container)
if(m_bUpdated == true) {
if(confirm("Do you want to save " + currentname + "?")) {
save('true', 'preview');
return;
}
}
Preview();
}
function Preview() {
if(itemsHTML[index].type == 'Page') {
if(isCMS) {
var context;
if(Empty(dnsCMS))
context = window.location.host.split(':')[0];
else
context = Trim(dnsCMS);
var host = window.location.protocol + "//" + context + (!Empty(window.location.port) ? ":" + window.location.port : "") + Strtran(window.location.pathname, "/planeditor/plan.jsp", "");
windowOpenForeground(host + '/cms/' + itemsHTML[index].alias + '.html', '', 'toolbar=1,menubar=1,location=1,status=1,directories=0,width=800px,height=600px,top=0,left=0,resizable=1,scrollbars=1');
} else
windowOpenForeground('../jsp/' + itemsHTML[index].name + '.jsp', '', 'toolbar=1,menubar=1,location=1,status=1,directories=0,width=800px,height=600px,top=0,left=0,resizable=1,scrollbars=1');
} else
windowOpenForeground(itemsHTML[index].url, '', 'toolbar=1,menubar=1,location=1,status=1,directories=0,width=800px,height=600px,top=0,left=0,resizable=1,scrollbars=1');
}
function openResource(e, i, id_container, name) {
e.cancelBubble = true;
SelectContents(id_container, name);
}
// Funzioni di inserimento nuovo item
var type;
function addItem(item) {
type = item;
document.getElementById('mask').setStyle('display', 'block');
// document.getElementById("mask").fx.start('opacity','0.7').chain(function(){
document.getElementById('canvasitems').setStyle('cursor', 'crosshair');
Ctrl("canvas").onmousedown = function (event) {
// document.getElementById("mask").fx.start('opacity','0').chain(function(){
document.getElementById("mask").setStyle('display', 'none');
// });
// tipz.detach('.tipz');
putItem(event);
writeHTML();
/*
$$('.tipz').each(function(element,index) {
element.store('tip:title', ' ');
element.store('tip:text', element.get('title'));
});
tipz.attach('.tipz');
*/
};
// });
}
function setLinkables(reset) {
var itm_main = itemsHTML[index];
for(var i = 0; i < itemsHTML.length; i++) {
var itm_temp = itemsHTML[i];
if(itm_temp.id != itm_main.id && itm_temp.type != "Link") {
if(reset) {
document.getElementById(itm_temp.id).removeClass("linkable");
document.getElementById(itm_temp.id + "_target").setStyles({
'display': 'none'
});
} else {
var faths = itm_temp.father.split(",");
var father_found = false;
for(var j = 0; j < faths.length && !father_found; j++) {
//CUSTOM CMS PER LINK
if(isCMS) {
if(itm_main.alias == faths[j]) {
father_found = true;
}
} else {
if(itm_main.name == faths[j]) {
father_found = true;
}
}
//END CUSTOM CMS PER LINK
}
if(!father_found) {
document.getElementById(itm_temp.id + "_target").setStyles({
'display': 'block'
});
}
}
}
}
}
function checkLinkable(elem, out) {
if(linking) {
item_main = itemsHTML[index];
var id_target = elem.id;
var trovato = false;
var linked = false;
for(var i = 0; i < itemsHTML.length && !trovato; i++) {
item_temp = itemsHTML[i];
if(item_temp.id == id_target && id_target != item_main.id) {
trovato = true;
var faths = item_temp.father.split(",");
for(var j = 0; j < faths.length; j++) {
//CUSTOM CMS PER LINK
if(isCMS) {
if(item_main.alias == faths[j]) {
//Already linked
linked = true;
}
} else {
if(item_main.name == faths[j]) {
//Already linked
linked = true;
}
}
//END CUSTOM CMS PER LINK
}
}
}
if(!linked && item_main.id != id_target)
if(out) {
document.getElementById("canvasitems").setStyle('cursor', 'crosshair');
document.getElementById(elem.id).removeClass('linkable');
}
else {
document.getElementById("canvasitems").setStyle('cursor', 'pointer');
document.getElementById(elem.id).addClass('linkable');
}
}
}
function putItem(e, reload) {
var xpos = 0;
var ypos = 0;
if(!e) e = window.event;
if(e != null) {
xpos = (e.pageX) ? e.pageX : (e.clientX) ? e.clientX : 0;
ypos = (e.pageY) ? e.pageY : (e.clientY) ? e.clientY : 0;
if(document.all) {
xpos += window.pageXOffset;
ypos += window.pageYOffset;
}
xpos = xpos - parseInt(Ctrl("backcanvas").offsetLeft);
ypos = ypos - parseInt(Ctrl("backcanvas").offsetTop);
}
switch(type) {
case 'Page':
var html = '<div onmouseover="checkLinkable(this)" onmouseout="checkLinkable(this,true)" id="item' + nitem + '" name="item' + nitem + '" class="item" style="top:' + (ypos) + 'px;left:' + (xpos) + 'px;" onmousedown="cancelEvent(event);" onClick="cancelEvent(event);clickItem(event,\'item' + nitem + '\')">';
html += '<div class="icons target" title="Add link" id="item' + nitem + '_target"></div>';
html += '<div id="item' + nitem + '_header" class="item_header">';
html += ' <p id="item' + nitem + '_title" class="title"></p>';
html += ' <p id="item' + nitem + '_subtitle" class="subtitle"></p>';
html += '</div>';
html += '<div id="item' + nitem + '_content" class="content">';
html += ' <div class="pageimage-container"></div>';
html += ' <div id="item' + nitem + '_itemicons" class="icons-container">';
html += ' <span class="icons hidden menuflag" title="Page in menu"></span>';
html += ' <span class="icons hidden modelflag" title="Page is a model"></span>';
html += ' <span class="icons hidden info" id="item' + nitem + '_description"></span>';
html += ' </div>';
html += '</div>';
html += ' <div id=\'item' + nitem + '_pagetbar\' class="pagetbar">';
html += ' <div class="tipz contents" id="item' + nitem + '_contents" title="Open contents popup" onclick="cancelEvent(event);clickItem(event,\'item' + nitem + '\');openResource(event,' + nitem + ',\'item' + nitem + '\',\'\');" ></div>';
if(isCMS) {
html += ' <div class="tipz cms_template" id="item' + nitem + '_template" title="Edit page layout" onclick="clickItem(event,\'item' + nitem + '\');EditTemplate(event);"></div>';
} else {
html += ' <div class="tipz template" id="item' + nitem + '_template2" title="Edit pagelet" onclick="clickItem(event,\'item' + nitem + '\');editPagelet(event);"></div>';
}
if(isCMS && !previewCMS) {
html += ' <div class="tipz disabled preview" style="color:#eeeeee" id="item' + nitem + '_preview" title="Not available" ></div>';
}else{
html += ' <div class="tipz preview" id="item' + nitem + '_preview" title="Open preview popup" onclick="cancelEvent(event);clickItem(event,\'item' + nitem + '\');PreviewCheck(event,\'item' + nitem + '\');" ></div>';
}
html += ' <div class="tipz link" id="item' + nitem + '_addlink" title="Link to another page" onclick="cancelEvent(event);clickItem(event,\'item' + nitem + '\');startSelectLink(this.id,event);" ></div>';
html += ' <div class="tipz ac" id="item' + nitem + '_code" title="Open action code" onclick="cancelEvent(event);clickItem(event,\'item' + nitem + '\');editItemEvent();" ></div>';
html += ' </div>';
html += '</div>';
itemsHTML[countindex] = new ZTPlanObjects.pageObj('item' + nitem, 'item' + nitem, 'Page', html, '', '', xpos, ypos);
if(!reload) itemsHTML[countindex].neww = true;
nitem++;
countindex++;
var itm = itemsHTML[countindex - 1];
Ctrl("canvasitems").innerHTML = Ctrl("canvasitems").innerHTML + itm.html;
//CUSTOM CMS PER LINK
if(isCMS) {
Ctrl(itm.id + "_title").innerHTML += itm.alias;
} else {
Ctrl(itm.id + "_title").innerHTML += itm.name;
}
//END CUSTOM CMS PER LINK
break;
case 'Link':
var htmlLink = '<div id="item' + nitem + '" name="item' + nitem + '" class="link_tools" style="top:' + ypos + 'px;left:' + xpos + 'px;">';
htmlLink += '<div class="tipz infolink" title="Link Info" onClick="cancelEvent(event);selectLink(\'item' + nitem + '\');" onmousedown="cancelEvent(event);"></div>';
htmlLink += '<div class="tipz deletelink" title="Delete link" onmousedown="cancelEvent(event);" onClick="cancelEvent(event);deleteLink(\'item' + nitem + '\');"></div>';
htmlLink += '</div>';
itemsHTML[countindex] = new ZTPlanObjects.linkObj('item' + nitem, 'item' + nitem, 'Link', htmlLink, '', '', xpos, ypos, '', '');
nitem++;
countindex++;
Ctrl("canvasitems").innerHTML = Ctrl("canvasitems").innerHTML + itemsHTML[countindex - 1].html;
break;
}
for(var i = 0; i < itemsHTML.length; i++) {
var res = document.getElementById(itemsHTML[i].id + "_wrapper");
if(!Empty(res)) {
res.style.display = "none";
}
}
document.getElementById('canvasitems').setStyle('cursor', 'default');
Ctrl("canvas").onmousedown = function (event) {
beginDragSelection(event);
resetItems();
};
}
function resetItems() {
var i, oldVisible = document.querySelectorAll(".link_tools.visible");
for (i = 0; i < oldVisible.length; i++) {
// rendo non visibili tutti le icone dei vecchi link
oldVisible[i].classList.remove("visible");
}
for(i = 0; i < itemsHTML.length; i++) {
if(itemsHTML[i].type != "Link") {
document.getElementById(itemsHTML[i].id).removeClass('selected');
document.getElementById(itemsHTML[i].id).removeAttribute('selected');
}
}
drawLinks(false);
mainitem = null;
//refreshToolTips();
}
function openRes(id, iX, iY, fX, fY, iW, iH, step, tot) {
//alert("iX: "+iX + " "+"iY: "+iY+" -- "+"fX: "+fX+" fY: "+fY);
var elem = document.getElementById(id);
if(step > tot) {
elem.style.top = "-20px";
elem.style.left = "-20px";
elem.style.width = "190px";
elem.style.height = "155px";
elem.style.border = "0";
var closeres = document.getElementById(Strtran(id, "_wrapper", "") + "_closeres");
//closeres.onclick = function(){eval("closeRes('"+id+"',-20,-20,"+fX+","+fY+",190,155,1,10)")};
closeres.onclick = function () {
closeRes(id, -20, -20, fX, fY, 190, 155, 1, 10);
};
//alert("iX: "+iX + " "+"iY: "+iY+" -- "+"fX: "+fX+" fY: "+fY);
return;
}
var fWidth = parseInt(190 / 10);
var fHeight = parseInt(155 / 10);
elem.style.left = iX + "px";
elem.style.top = iY + "px";
step++;
setTimeout("openRes('" + id + "'," + parseInt(iX - fX) + "," + parseInt(iY - fY) + "," + fX + "," + fY + "," + parseInt(iW + fWidth) + "," + parseInt(iH + fHeight) + "," + step + "," + tot + ")", 10);
}
function closeRes(id, iX, iY, fX, fY, iW, iH, step, tot) {
//alert("iX: "+iX + " "+"iY: "+iY+" -- "+"fX: "+fX+" fY: "+fY);
var elem = document.getElementById(id);
if(step > tot) {
elem.style.display = "none";
var idx = Strtran(id, "_wrapper", "").substr(4);
if(!Empty(document.getElementById("shadow" + idx))) {
document.getElementById("shadow" + idx).style.display = "block";
document.getElementById("handler" + idx + "_0").style.display = "block";
document.getElementById("handler" + idx + "_1").style.display = "block";
document.getElementById("handler" + idx + "_2").style.display = "block";
document.getElementById("handler" + idx + "_3").style.display = "block";
}
//alert("iX: "+iX + " "+"iY: "+iY+" -- "+"fX: "+fX+" fY: "+fY);
return;
}
var fWidth = parseInt(190 / 10);
var fHeight = parseInt(155 / 10);
elem.style.left = iX + "px";
elem.style.top = iY + "px";
step++;
setTimeout("closeRes('" + id + "'," + parseInt(iX + fX) + "," + parseInt(iY + fY) + "," + fX + "," + fY + "," + parseInt(iW - fWidth) + "," + parseInt(iH - fHeight) + "," + step + "," + tot + ")", 10);
}
function ShowResources(e, itm) {
if(!linking) {
document.getElementById("shadow" + itm.substr(4)).style.display = "none";
document.getElementById("handler" + itm.substr(4) + "_0").style.display = "none";
document.getElementById("handler" + itm.substr(4) + "_1").style.display = "none";
document.getElementById("handler" + itm.substr(4) + "_2").style.display = "none";
document.getElementById("handler" + itm.substr(4) + "_3").style.display = "none";
openResource(e, 0, itemsHTML[index].id, itemsHTML[index].title);
}
}
// riscrive l'HTML dopo la cancellazione degli items
function writeHTML(reset) {
if(reset == null) reset = false;
var itm, itm_html;
formProp.height = (Empty(formProp.height) ? Ctrl("canvas").clientHeight : formProp.height);
formProp.width = (Empty(formProp.width) ? Ctrl("canvas").clientWidth : formProp.width);
if(reset) {
Ctrl("canvasitems").innerHTML = '';
removeAllHandlers();
}
Ctrl('backcanvas').style.height = formProp.height + 'px';
Ctrl('backcanvas').style.width = formProp.width + 'px';
var i;
if(reset)
for(i = 0; i < itemsHTML.length; i++)
Ctrl("canvasitems").innerHTML = Ctrl("canvasitems").innerHTML + itemsHTML[i].html;
for(i = 0; i < itemsHTML.length; i++) {
itm = itemsHTML[i];
itm_html = Ctrl(itm.id);
itm_html.name = itm.name;
itm_html.style.left = itm.x + 'px';
itm_html.style.top = itm.y + 'px';
if(itm.type == 'Page') {
//Check length of title, description, template name
document.getElementById(itm.id).className = '';
LibJavascript.CssClassNameUtils.addClass(document.getElementById(itm.id), "item");
if(!Empty(itm.type_category)) {
LibJavascript.CssClassNameUtils.addClass(document.getElementById(itm.id), itm.type_category);
}
if(!Empty(itm.page_image)) {
document.querySelector('#' + itm.id + ' .pageimage-container' ).style.backgroundImage = "url('./images/plan_" + itm.page_image + ".jpg')";
}
if(!Empty(itm.importance)) {
LibJavascript.CssClassNameUtils.addClass(document.getElementById(itm.id), itm.importance);
var shadowRef = document.getElementById("shadow"+itm.id.charAt(itm.id.length-1));
if(!Empty(shadowRef)) {
shadowRef.className = "shadow " + itm.importance;
}
}
// newTitle = newTitle.substr(0, 1).toUpperCase() + newTitle.substr(1, newTitle.length).toLowerCase();
Ctrl(itm.id + "_title").innerHTML = itm.title;
if(itm.name.toLowerCase() != itm.title.toLowerCase()) {
Ctrl(itm.id + "_subtitle").classList.remove('hidden');
Ctrl(itm.id + "_subtitle").innerHTML = itm.name;
} else {
Ctrl(itm.id + "_subtitle").classList.add('hidden');
}
if(itm.description.toLowerCase() != itm.title.toLowerCase()) {
Ctrl(itm.id + "_description").classList.remove('hidden');
Ctrl(itm.id + "_description").title = itm.description;
} else {
Ctrl(itm.id + "_description").classList.add('hidden');
}
if(itm.model == 'true') {
document.querySelector("#" + itm.id + "_itemicons .modelflag").classList.remove('hidden');
} else {
document.querySelector("#" + itm.id + "_itemicons .modelflag").classList.add('hidden');
}
if(isCMS) {
if(itm.published != 'true') {
document.getElementById(itm.id).classList.add("notpublished");
}
if(itm.menu == 'true') {
document.querySelector("#" + itm.id + "_itemicons .menuflag").classList.remove('hidden');
} else {
document.querySelector("#" + itm.id + "_itemicons .menuflag").classList.add('hidden');
}
}
}
}
if(reset) checkMargins(true);
//refreshToolTips();
}
// viengono eliminati gli elementi selezionati dall'array
function deleteItem() {
if((mainitem != null) && confirm('Are you sure?')) {
var tmp = [];
var tmpn = 0;
var deletedlink;
var itemsToDelete = [];
var i, m, n, tmp_links, tmp_father;
for(i = 0; i < itemsHTML.length; i++) {
itemsHTML[i].aliasLocked = false;
// cancello i links
if(itemsHTML[i].shadow != '') {
if(isCMS && itemsHTML[i].alias != null && (itemsHTML[i].alias.toLowerCase() == "category" || itemsHTML[i].alias.toLowerCase() == "content")) {
alert(itemsHTML[i].alias + " " + planlockdelete_str);
itemsHTML[i].aliasLocked = true;
} else {
//CUSTOM CMS PER LINK
if(isCMS) {
deletedlink = itemsHTML[i].alias;
} else {
deletedlink = itemsHTML[i].name;
}
//END CUSTOM CMS PER LINK
for(m = 0; m < itemsHTML.length; m++) {
if(itemsHTML[m].type == 'Page' && typeof (itemsHTML[m].links) != '') {
tmp_links = itemsHTML[m].links.split(',');
for(n = 0; n < tmp_links.length; n++) {
if(tmp_links[n] == deletedlink) LibJavascript.Array.remove(tmp_links, n);
}
itemsHTML[m].links = tmp_links.join(',');
}
if(itemsHTML[m].type == 'Page' && typeof (itemsHTML[m].father) != '') {
tmp_father = itemsHTML[m].father.split(',');
for(n = 0; n < tmp_father.length; n++) {
if(tmp_father[n] == deletedlink) LibJavascript.Array.remove(tmp_father, n);
}
itemsHTML[m].father = tmp_father.join(',');
}
if(itemsHTML[m].type == 'Link') {
if(itemsHTML[m].to == deletedlink || itemsHTML[m].from == deletedlink)
itemsHTML[m].toDelete = true;
}
}
}
}
if(itemsHTML[i].aliasLocked || (itemsHTML[i].shadow == '' && !itemsHTML[i].toDelete)) { // sposta gli elementi non selezionati in tmp
tmp[tmpn] = itemsHTML[i];
tmpn++;
} else {
var itmToDel = itemsHTML[i];
itemsToDelete.push(itmToDel);
}
}
countindex = tmpn;
itemsHTML = tmp;
for(i = 0; i < itemsToDelete.length; i++) {
if(itemsToDelete[i].type != "Link") {
var iToDel = document.getElementById(itemsToDelete[i].id);
var IDnum = itemsToDelete[i].id.substr(4);
var itm_shadow = document.getElementById("shadow" + IDnum);
itm_shadow.setStyle('background-color', '#FFFFFF');
itm_shadow.setStyle('height', '100%');
iToDel.setStyle('background-color', '#B0B0B0');
iToDel.fade(0);
itm_shadow.fade(0);
}
}
var toDelay = function () {
writeHTML(true);
index = null;
Properties();
};
drawLinks(true);
toDelay.delay(500);
}
}
function saveAsModel() {
currentname = "";
save('asModel', null);
}
var notimooManager;
function save(mode, act) {
if(codeOpen) {
if(ActionCodeLayer)
ActionCodeLayer.getContainer().getElement('iframe').contentWindow.fireEvent('save');
}
if(!Empty(mode) && Array.isArray(mode) && mode.length == 2) {
act = mode[1];
mode = mode[0];
}
if(Empty(mode)) mode = 'false';
if(EmptyString(act)) act = "";
if(parent) parent.is_Saving = true;
if(currentname != "") {
notimooManager = new Notimoo({});
notimooManager.show({
title: 'Notification message',
message: 'saving plan...',
sticky: true,
width: 200,
height: 40
});
save2.delay(100, this, [mode, act]);
} else {
//CUSTOM CMS
if (!isCMS) {
if(window.parent.location.href.indexOf("portalstudio.jsp") < 0){
OpenWindow('../portalstudio/saveas.jsp?isCMS=false&tool=plan&mode=' + mode, null, 580, 600);
} else {
window.parent.saveAsTool(mode);
}
} else {
window.parent.open('../portalstudio/saveas.jsp?isCMS=true&tool=plan&mode=' + mode, null, 'height=400,width=520,left=350,top=200,status=no,toolbar=no,menubar=no,location=no,resizable=yes');
}
}
}
function buildLinksObj() {
var LinksObj = []; // array di oggetti e ogni oggetto definisce un tree
for(var i = 0; i < itemsHTML.length; i++) {
if(itemsHTML[i].father == '') { //roots
var tree_tmp = {
caption: itemsHTML[i].name,
link: '../jsp/' + itemsHTML[i].name + '.jsp',
target: '_self',
uid: AlfaKeyGen(10),
MenuItem: [],
elements: 0
};
LinksObj.push(buildLinksChildsObj(tree_tmp, itemsHTML[i]));
}
}
return toJSONString({
SPVMNMenu: {
MenuItem: LinksObj
}
});
}
function buildLinksChildsObj(tree_tmp, item) {
if(item.links != '') {
var links_array = item.links.split(',');
for(var l = 0; l < links_array.length; l++) {
for(var i = 0; i < itemsHTML.length; i++) {
//CUSTOM CMS PER LINK
if(isCMS) {
if(links_array[l] == itemsHTML[i].alias) {
tree_tmp.MenuItem.push(buildLinksChildsObj({
caption: links_array[l],
url: '../jsp/' + links_array[l] + '.jsp',
target: '_self',
uid: AlfaKeyGen(10),
MenuItem: [],
elements: 0
}, itemsHTML[i]));
}
} else {
if(links_array[l] == itemsHTML[i].name) {
tree_tmp.MenuItem.push(buildLinksChildsObj({
caption: links_array[l],
url: '../jsp/' + links_array[l] + '.jsp',
target: '_self',
uid: AlfaKeyGen(10),
MenuItem: [],
elements: 0
}, itemsHTML[i]));
}
}
//END CUSTOM CMS PER LINK
}
}
tree_tmp.elements = links_array.length;
}
return tree_tmp;
}
function setPropertiesID(obj) { //ricreo properties per compatibilita con il vecchio array
if(obj.objClass.newProperties) {
var mainObject = obj;
mainObject.objClass.properties = [];
for(var i in mainObject.objClass.newProperties) {
var tab = mainObject.objClass.newProperties[i];
for(var ii = 0; ii < tab.length; ii++) {
mainObject.objClass.properties.push(tab[ii].propID);
}
}
}
}
function setPropertiesObj(obj) { //ricreo un oggetto per compatibilità con il vecchio array properties
var i;
var PropObj = [];
var mainObject = obj;
if(obj.objClass.newProperties) {
for(i in mainObject.objClass.newProperties) {
var tab = mainObject.objClass.newProperties[i];
for(var ii = 0; ii < tab.length; ii++) {
PropObj.push(tab[ii]);
}
}
} else { //compatibilità con Properties vecchie
for(i = 0; i < mainObject.objClass.properties.length; i++) {
PropObj.push({
'propID': mainObject.objClass.properties[i]
});
}
}
return PropObj;
}
function save2(mode, act, getDef) {
var strsave = '';
var valuetosave;
var prop, check, url, output;
var save = true;
var delList = (typeof (act) == 'number' ? "" : UpdateDeletedPages());
//----Formato JSON
var JSONItems = [];
var JsonFormItem = {
type: 'Plan'
};
//--------
strsave += 'type||Plan';
//setPropertiesID(formProp);
// creo un Array di oggetti con le prop vecchie e nuove
var PropObj = setPropertiesObj(formProp);
for(var u = 0; u < PropObj.length; u++) {
prop = PropObj[u].propID;
valuetosave = formProp[prop];
if(typeof (valuetosave) != 'number') {
if(typeof (valuetosave) == 'undefined' || valuetosave == "") valuetosave = ' '; // se la prop e' undefined allora la salvo come ' '
}
strsave += "||" + prop + "||" + valuetosave;
if(typeof (valuetosave) == 'string')
JsonFormItem[prop] = Trim(valuetosave);
else
JsonFormItem[prop] = valuetosave;
}
strsave += '|||';
JSONItems.push(JsonFormItem);
for(var i = 0; i < itemsHTML.length; i++) {
if(itemsHTML[i].type == "Page") {
InitialPagesList = [];
InitialPagesList.push(itemsHTML[i]);
}
if(itemsHTML[i].neww && !isCMS) {
check = new JSURL("../servlet/JSPReader?name=" + itemsHTML[i].name + ".jsp&check=true", true).Response();
if(check == 'found')
if(!confirm("File " + itemsHTML[i].name + ".jsp already existing proceed ?")) {
save = false;
break;
}
itemsHTML[i].neww = false;
}
//CUSTOM CMS PER LINK
/* Verifico se esistono Link non validi da escludere nella stringa da salvare */
var writeItem;
if(isCMS && itemsHTML[i].type == 'Link') {
writeItem = false;
var checkFrom = false;
var checkTo = false;
for(var j = 0; j < itemsHTML.length; j++) {
if(itemsHTML[j].type == 'Page') {
if((itemsHTML[i].from == itemsHTML[j].name) || (itemsHTML[i].from == itemsHTML[j].alias)) {
var fromNew = itemsHTML[j].alias;
checkFrom = true;
}
if((itemsHTML[i].to == itemsHTML[j].name) || (itemsHTML[i].to == itemsHTML[j].alias)) {
var toNew = itemsHTML[j].alias;
checkTo = true;
}
// se trovo pagina con name o alias =from e name o alias=to aggiorno from e to del link con alias
if(checkFrom && checkTo) {
var linkFinded = false;
// verifico che non ci sia gia un link costruito con alias tra gli item di tipo link restanti (k=i+1)
for(var k = i + 1; k < itemsHTML.length; k++) {
if(itemsHTML[k].type == 'Link') {
if(fromNew == itemsHTML[k].from && toNew == itemsHTML[k].to) {
linkFinded = true;
break;
}
}
}
// se non ho trovato già il link fatto con alias, scrivo quello attuale con valori di from e to con i rispettivi alias
if(!linkFinded) {
itemsHTML[i].from = fromNew;
itemsHTML[i].to = toNew;
writeItem = true;
break;
}
}
}
}
} else {
writeItem = true;
}
if((isCMS && writeItem) || (!isCMS)) {
//setPropertiesID(itemsHTML[i]);
PropObj = setPropertiesObj(itemsHTML[i]);
strsave += 'type||' + itemsHTML[i].type;
var JsonItem = {};
JsonItem.type = itemsHTML[i].type;
for(u = 0; u < PropObj.length; u++) {
//prop=itemsHTML[i].objClass.properties[u];
//valuetosave=itemsHTML[i][prop];
prop = PropObj[u].propID;
valuetosave = itemsHTML[i][prop];
if(typeof (valuetosave) == 'undefined' || valuetosave == "") valuetosave = ' '; // se la prop è undefined allora la salvo come ' '
strsave += "||" + prop + "||" + valuetosave;
if(typeof (valuetosave) == 'string')
JsonItem[prop] = Trim(valuetosave);
else
JsonItem[prop] = valuetosave;
}
strsave += '|||';
JSONItems.push(JsonItem);
}
//END CUSTOM CMS PER LINK
}
/*In questo modo salva il def in JSON*/
var JDef = JSON.stringify(JSONItems, function (s, v) {
if(typeof (v) != 'object') return v.toString();
else return v;
});
if(getDef == undefined){
let path = ""
if(!isCMS) {
path = "../servlet/JSPSave?type=plan&name=" + currentname +
(m_nFrontendPort ? "&frontendport=" + m_nFrontendPort : "") +
"&dellist=" + delList +
"&def=" + URLenc(JDef) +
"&planmode=" + mode +
(typeof (act) == 'number' ? '&index=' + act : '') + '&linksObj=' + encodeURIComponent(buildLinksObj());
} else {
if(mode == 'asModel'){
path = "../servlet/JSPSave?type=plan&name=" + currentname + (m_nFrontendPort ? "&frontendport=" + m_nFrontendPort : "") +
"&def=" + URLenc(strsave) +
"&planmode=asModel&linksObj=" + encodeURIComponent(buildLinksObj());
} else {
path = "../servlet/gscs_be_generate?type=plan&name=" + currentname +
"&dellist=" + delList +
"&def=" + URLenc(strsave) +
"&planmode=" + mode +
'&linksObj=' + encodeURIComponent(buildLinksObj());
}
}
url = new JSURL(path + "&m_cID=" + cmdhash, true);
if(save) output = url.Response();
if(window.parent.changeName && !isCMS) window.parent.changeName(currentname, '', Strtran(window.frameElement.id, 'portalstudioframe', ''));
if(output == null) output = "";
notimooManager.close(notimooManager.elements[0]);
switch(output) {
case "true":
notimooManager.show({
title: 'Notification message',
message: 'plan saved!',
visibleTime: 2000,
width: 200
});
m_bUpdated = false;
if(typeof (window.opener) != "undefined") {
try {
window.opener.document.getElementById('zones_Id').submit();
} catch(e) {}
}
if(arguments.length > 0 && arguments[0] == "close") window.parent.closeCurrentObj();
if(act == 'preview') Preview();
if(parent) parent.is_Saving = false;
break;
case "ACCESS DENIED":
if(window.parent.location.href.indexOf("portalstudio.jsp") < 0){
accessDeniedStandaloneRefresh({name:currentname});
} else {
parent.jsonConfirmAccessDenied({name:currentname});
}
//alert("Access Denied.");
break;
// CUSTOM CMS
//case "DNS_EMPTY":
// alert("One DNS is required for this site at least.")
//break;
//case "DNS_EXISTS":
// alert("One of DNS is used by another site.")
//break;
case "TEMPLATE_EMPTY":
alert("Template is required for this site.");
break;
case "PROPERTIES_EMPTY":
alert("Some pages properties are empty. Name, Alias and Page Type required.\nThe alias only accepts Latin characters.");
break;
case "PROPERTIES_LANG_EMPTY":
alert("Alias required.\nThe alias only accepts Latin characters.");
break;
case "Home_EXISTS":
alert("You must declare only one Home page for this site.");
break;
case "Login_EXISTS":
alert("You must declare only one Login page for this site.");
break;
case "404_EXISTS":
alert("You must declare only one 404 page for this site.");
break;
case "403_EXISTS":
alert("You must declare only one 403 page for this site.");
break;
// END CUSTOM
default:
alert("Plan generation failed.");
break;
}
}else if(getDef == "getJDEF") {
return JDef;
}
}
function UpdateDeletedPages() {
var a = [];
for(var i = 0; i < InitialPagesList.length; i++) {
if(LibJavascript.Array.indexOf(itemsHTML, InitialPagesList[i]) == -1) { // la page e' stata cancellata
if(!Empty(InitialPagesList[i].user_agent)) {
var user_agents = InitialPagesList[i].user_agent.split(',');
var genIndex = true;
for(var ii = 0; ii < user_agents.length; ii++) {
if(ii == 0 && genIndex) {
a.push(InitialPagesList[i].name);
genIndex = false;
ii--;
} else if(user_agents.length > 1)
a.push(InitialPagesList[i].name + "_" + user_agents);
}
}
}
}
return a.join(',');
}
function Copy(cut) {
var deftmp = "";
for(var i = 0; i < itemsHTML.length; i++) {
if(itemsHTML[i].shadow != "") {
//if(itemsHTML[i]==itemsHTML[index]){
setPropertiesID(itemsHTML[i]);
deftmp += 'type||' + itemsHTML[i].type;
for(var u = 0; u < itemsHTML[i].objClass.properties.length; u++) {
var valuetosave = itemsHTML[i][itemsHTML[i].objClass.properties[u]];
if(typeof (valuetosave) != 'number') {
if(typeof (valuetosave) == 'undefined' || valuetosave == "") valuetosave = ' '; // se la prop e' undefined allora la salvo come ' '
}
deftmp += "||" + itemsHTML[i].objClass.properties[u] + "||" + valuetosave;
}
deftmp += '|||';
}
}
if(cut) deleteItem();
return deftmp;
}
function reload(e) {
let strreload;
if( c_ripristino && sessionStorage.getItem(c_ripristino)){
/**
* parent.is_Saving a False, perchè se fosse True i vari tab
* non sarebbero più cliccabili e quindi non si potrebbe lavorare
* sugli altri Tab
*/
parent.is_Saving = false;
strreload = JSON.parse(sessionStorage.getItem(c_ripristino))["def"];
currentname = JSON.parse(sessionStorage.getItem(c_ripristino))["name"];
sessionStorage.removeItem(c_ripristino);
if(window.parent.location.href.indexOf("portalstudio.jsp") < 0){
if(currentname){
save();
} else if(!currentname){
saveAsModel();
}
}
} else if(window.frameElement?.jdef){
strreload = JSON.parse(window.frameElement.jdef);
window.frameElement.jdef = undefined;
} else {
var url;
if(!isCMS)
url = new JSURL("../servlet/JSPLoad?type=plan&name=" + currentname, true);
else
url = new JSURL("../servlet/JSPLoad?type=plan&cms=true&name=" + currentname, true);
strreload = Strtran(url.Response(), '\u0080', '\u20AC');
// strreload=Strtran(strreload,'$>','%>');
// strreload=Strtran(strreload,'<$','<%');
}
return reload_(e, strreload, false);
}
function Paste(strpaste) {
if(strpaste != '') return reload_(null, strpaste, true);
}
function reload_(e, strreload, paste) {
if(!paste) {
itemsHTML = [];
nitem = 0;
countindex = 0;
}
Ctrl("canvasitems").innerHTML = '';
var reload;
var arrayreload;
var arrayreload2;
var i, b, bb, valore, nomeprop;
var newTool = false;
if(Left(strreload, 1) == '[') { //----------------------- Def in formato JSON
var JsonItems = JSON.parse(strreload);
arrayreload = JsonItems;
for(i = 0; i < arrayreload.length; i++) {
arrayreload2 = arrayreload[i];
type = arrayreload2.type;
reload = true;
putItem(e, reload);
for(b in arrayreload2) {
nomeprop = b;
valore = arrayreload2[b];
if(valore == 'undefined') valore = ' ';
if(type == 'Plan' && !paste) { // proprietà generiche del form
formProp[nomeprop] = valore;
} else {
// Nel Paste svuoto i link
if(paste && (nomeprop == 'father' || nomeprop == 'links')) {
valore = '';
}
if(paste && (nomeprop == 'x' || nomeprop == 'y')) {
valore = (valore - 0) + 10;
}
if(paste && nomeprop == 'name') {
for(bb = 0; bb < itemsHTML.length; bb++) {
if(itemsHTML[bb].name == valore) {
valore += '_copy';
}
}
}
if(paste && nomeprop == 'pname') {
for(bb = 0; bb < itemsHTML.length; bb++) {
if(itemsHTML[bb].pname == valore) {
valore += '_copy';
}
}
}
if(paste && nomeprop == 'alias') {
for(bb = 0; bb < itemsHTML.length; bb++) {
if(itemsHTML[bb].alias == valore) {
valore += '_copy';
}
}
}
itemsHTML[countindex - 1][nomeprop] = valore;
}
b++;
}
if(!paste)
InitialPagesList[countindex - 1] = itemsHTML[countindex - 1];
}
writeHTML(true);
if(!paste) drawLinks(true);
} else if(strreload != ' ' && strreload.substring(0, 4) == 'type') { //-----Vecchi Def con ||
//cerco se ci sono oggetti link per cpmpatibilita plan vecchi
if(strreload.indexOf("type||Link") > -1) newTool = true;
arrayreload = strreload.split('|||');
for(i = 0; i < arrayreload.length - 1; i++) {
arrayreload2 = arrayreload[i].split('||');
type = arrayreload2[1];
reload = true;
putItem(e, reload);
for(b = 0; b < arrayreload2.length; b++) {
valore = Trim(arrayreload2[b + 1]);
nomeprop = arrayreload2[b];
if(valore == 'undefined') valore = ' ';
if(i == 0 && !paste) { // proprietà generiche del form
formProp[nomeprop] = valore;
} else {
// Nel Paste svuoto i link
if(paste && (nomeprop == 'father' || nomeprop == 'links')) {
valore = '';
}
if(paste && (nomeprop == 'x' || nomeprop == 'y')) {
valore = (valore - 0) + 10;
}
if(paste && nomeprop == 'name') {
for(bb = 0; bb < itemsHTML.length; bb++) {
if(itemsHTML[bb].name == valore) {
valore += '_copy';
}
}
}
if(paste && nomeprop == 'pname') {
for(bb = 0; bb < itemsHTML.length; bb++) {
if(itemsHTML[bb].pname == valore) {
valore += '_copy';
}
}
}
if(paste && nomeprop == 'alias') {
for(bb = 0; bb < itemsHTML.length; bb++) {
if(itemsHTML[bb].alias == valore) {
valore += '_copy';
}
}
}
itemsHTML[countindex - 1][nomeprop] = valore;
}
b++;
}
if(!paste)
InitialPagesList[countindex - 1] = itemsHTML[countindex - 1];
}
//creo gli item link per i def vecchi
if(!newTool && !paste) {
for(i = 0; i < arrayreload.length - 1; i++) {
arrayreload2 = arrayreload[i].split('||');
type = arrayreload2[1];
for(b = 0; b < arrayreload2.length; b++) {
valore = Trim(arrayreload2[b + 1]);
nomeprop = arrayreload2[b];
if(nomeprop == 'name')
var name = valore;
if(nomeprop == 'links' && !Empty(valore)) {
var links_array = valore.split(',');
for(var m = 0; m < links_array.length; m++) {
var htmlLink = '<div id="item' + nitem + '" name="item' + nitem + '" style="top:' + 50 + 'px;left:' + 50 + 'px;">';
htmlLink += '<div class="tipz infolink" title="Link Info" onmousedown="cancelEvent(event);" onClick="cancelEvent(event);selectLink(\'item' + nitem + '\');"></div>';
htmlLink += '<div class="tipz deletelink" title="Delete link" onmousedown="cancelEvent(event);" onClick="cancelEvent(event);deleteLink(\'item' + nitem + '\');"></div>';
htmlLink += '</div>';
itemsHTML[countindex] = new ZTPlanObjects.linkObj('item' + nitem, 'item' + nitem, 'Link', htmlLink, '', '', 50, 50, name, links_array[m]);
nitem++;
countindex++;
Ctrl("canvasitems").innerHTML = Ctrl("canvasitems").innerHTML + itemsHTML[countindex - 1].html;
}
}
}
}
// if(!paste) moveLinks();
}
writeHTML(true);
if(!paste) drawLinks(true);
} else {
alert('Errore in caricamento del def');
}
};
function showLink(e) {
e = (e) ? e : window.event;
var tX = e.clientX;
var tY = e.clientY;
tX = (e.pageX) ? e.pageX : (e.clientX) ? e.clientX : 0;
tY = (e.pageY) ? e.pageY : (e.clientY) ? e.clientY : 0;
tX = tX - parseInt(Ctrl("backcanvas").style.left);
tY = tY - parseInt(Ctrl("backcanvas").style.top);
var main_Item = itemsHTML[index];
var itm = Ctrl(main_Item.id);
Ctrl("canvas_showlink").innerHTML = '';
var cl = CanvasLib.Init("canvas_showlink", Ctrl("canvas_showlink").offsetWidth, Ctrl("canvas_showlink").offsetHeight);
// cl.SetAttrib('#36679D',0.5);
cl.SetAttrib('#00A0BD', 1);
//alert(mX+ " " +mY+ " " +parseInt(main_Item.offsetLeft+parseInt(main_Item.offsetWidth/2))+ " " +parseInt(main_Item.offsetTop+parseInt(main_Item.offsetHeight/2)));
cl.DrawLine(tX, tY, itm.offsetLeft + parseInt(itm.offsetWidth / 2), itm.offsetTop + parseInt(itm.offsetHeight / 2), true);
//Ctrl('debug').innerHTML = tX+ " " +tY;
//Ctrl('debug').style.display = "none"
}
function resetLinkingStatus() {
Ctrl("canvas_showlink").innerHTML = '';
linking = false;
Ctrl("canvas").onmousedown = function (event) {
beginDragSelection(event);
resetItems();
setTimeout('FormProperties()', 100);
};
Ctrl("canvasitems").onmousemove = null;
Ctrl("canvasitems").setStyle('cursor', 'default');
setLinkables(true);
}
function startSelectLink(/*id, e*/) {
//clickItem(e,Strtran(id,"_addlink",''));
linking = true;
document.getElementById("canvasitems").setStyle('cursor', 'crosshair');
Ctrl("canvas").onmousedown = resetLinkingStatus;
Ctrl("canvasitems").onmousemove = showLink;
setLinkables();
}
function setLink(id_target) {
var i, j;
item_main = itemsHTML[index];
var trovato = false;
for(i = 0; i < itemsHTML.length && !trovato; i++) {
item_temp = itemsHTML[i];
if(item_temp.id == id_target && id_target != item_main.id) {
trovato = true;
var faths = item_temp.father.split(",");
//CUSTOM CMS PER LINK
if(isCMS) {
if(typeof (item_temp.alias) != 'undefined' && item_temp.alias != "") {
for(j = 0; j < faths.length; j++) {
if(item_main.alias == faths[j]) {
//Already linked
resetLinkingStatus();
return;
}
}
if(Trim(item_temp.father) != "") {
item_temp.father += "," + item_main.alias;
} else {
item_temp.father = item_main.alias;
}
if(Trim(item_main.links) != "") {
item_main.links += "," + item_temp.alias;
} else {
item_main.links += item_temp.alias;
}
} else {
alert("Alias required.\nThe alias only accepts Latin characters.");
resetLinkingStatus();
return;
}
}
if(Trim(item_main.links) != "") {
item_main.links += "," + item_temp.name;
} else {
item_main.links += item_temp.name;
}
if(Trim(item_temp.father) != "") {
item_temp.father += "," + item_main.name;
} else {
for(j = 0; j < faths.length; j++) {
if(item_main.name == faths[j]) {
//Already linked
resetLinkingStatus();
return;
}
}
// if(Trim(item_temp.father) != ""){
// item_temp.father += ","+item_main.name;
// }else{
item_temp.father = item_main.name;
//}
}
//END CUSTOM CMS PER LINK
resetLinkingStatus();
}
}
var htmlLink = '<div id="item' + nitem + '" name="item' + nitem + '" class="link_tools visible">';
htmlLink += '<div class="tipz infolink" title="Link Info" onmousedown="cancelEvent(event);" onClick="cancelEvent(event);selectLink(\'item' + nitem + '\');"></div>';
htmlLink += '<div class="tipz deletelink" title="Delete link" onmousedown="cancelEvent(event);" onClick="cancelEvent(event);deleteLink(\'item' + nitem + '\');"></div>';
htmlLink += '</div>';
//CUSTOM CMS PER LINK
if(isCMS) {
itemsHTML[countindex] = new ZTPlanObjects.linkObj('item' + nitem, 'item' + nitem, 'Link', htmlLink, '', '', 0, 0, item_main.alias, item_temp.alias);
} else {
itemsHTML[countindex] = new ZTPlanObjects.linkObj('item' + nitem, 'item' + nitem, 'Link', htmlLink, '', '', 0, 0, item_main.name, item_temp.name);
}
//END CUSTOM CMS PER LINK
nitem++;
countindex++;
Ctrl("canvasitems").innerHTML = Ctrl("canvasitems").innerHTML + itemsHTML[countindex - 1].html;
drawLinks(false);
}
function selectLink(itm) {
mainitem = itm;
//if(typeof(itemsHTML[index])!='undefined') selected=true
// trova lindice del mainitem
removeAllHandlers();
for(var i = 0; i < itemsHTML.length; i++) {
if(itemsHTML[i].id == mainitem)
index = i;
}
Properties();
}
function findItem(name) {
for(var i = 0; i < itemsHTML.length; i++) {
if(itemsHTML[i].name == name) return itemsHTML[i];
}
return null;
}
function updateLinksName(item, new_name) {
//CUSTOM CMS PER LINK
var i, j, tmp_links, tmp_father;
if(isCMS) {
for(i = 0; i < itemsHTML.length; i++) {
if(itemsHTML[i].type == 'Link' && item.alias == itemsHTML[i].from)
itemsHTML[i].from = new_name;
if(itemsHTML[i].type == 'Link' && item.alias == itemsHTML[i].to)
itemsHTML[i].to = new_name;
if(itemsHTML[i].type == 'Page' && itemsHTML[i].links.indexOf(item.alias) > -1) {
tmp_links = itemsHTML[i].links.split(',');
for(j = 0; j < tmp_links.length; j++) {
if(tmp_links[j] == item.alias) tmp_links[j] = new_name;
}
itemsHTML[i].links = tmp_links.join(',');
}
if(itemsHTML[i].type == 'Page' && itemsHTML[i].father.indexOf(item.alias) > -1) {
tmp_father = itemsHTML[i].father.split(',');
for(j = 0; j < tmp_father.length; j++) {
if(tmp_father[j] == item.alias) tmp_father[j] = new_name;
}
itemsHTML[i].father = tmp_father.join(',');
}
}
} else {
for(i = 0; i < itemsHTML.length; i++) {
if(itemsHTML[i].type == 'Link' && item.name == itemsHTML[i].from)
itemsHTML[i].from = new_name;
if(itemsHTML[i].type == 'Link' && item.name == itemsHTML[i].to)
itemsHTML[i].to = new_name;
if(itemsHTML[i].type == 'Page' && itemsHTML[i].links.indexOf(item.name) > -1) {
tmp_links = itemsHTML[i].links.split(',');
for(j = 0; j < tmp_links.length; j++) {
if(tmp_links[j] == item.name) tmp_links[j] = new_name;
}
itemsHTML[i].links = tmp_links.join(',');
}
if(itemsHTML[i].type == 'Page' && itemsHTML[i].father.indexOf(item.name) > -1) {
tmp_father = itemsHTML[i].father.split(',');
for(j = 0; j < tmp_father.length; j++) {
if(tmp_father[j] == item.name) tmp_father[j] = new_name;
}
itemsHTML[i].father = tmp_father.join(',');
}
}
}
//END CUSTOM CMS PER LINK
}
function deleteLink(itm) {
if(!confirm('Delete this Link ?')) return;
var tmp = [];
var tmpn = 0;
var toLink, fromLink;
for(var i = 0; i < itemsHTML.length; i++) {
if(itemsHTML[i].id == itm) {
item_main = itemsHTML[i].id;
toLink = itemsHTML[i].to;
fromLink = itemsHTML[i].from;
} else {
tmp[tmpn] = itemsHTML[i];
tmpn++;
}
}
//CUSTOM CMS PER LINK
var m, n, tmp_links, tmp_father;
if(isCMS) {
for(m = 0; m < itemsHTML.length; m++) {
if(typeof (itemsHTML[m].links) != '' && itemsHTML[m].alias == fromLink) {
tmp_links = itemsHTML[m].links.split(',');
for(n = 0; n < tmp_links.length; n++) {
if(tmp_links[n] == toLink) LibJavascript.Array.remove(tmp_links, n);
}
itemsHTML[m].links = tmp_links.join(',');
}
if(typeof (itemsHTML[m].father) != '' && itemsHTML[m].alias == toLink) {
tmp_father = itemsHTML[m].father.split(',');
for(n = 0; n < tmp_father.length; n++) {
if(tmp_father[n] == fromLink) LibJavascript.Array.remove(tmp_father, n);
}
itemsHTML[m].father = tmp_father.join(',');
}
}
} else {
for(m = 0; m < itemsHTML.length; m++) {
if(typeof (itemsHTML[m].links) != '' && itemsHTML[m].name == fromLink) {
tmp_links = itemsHTML[m].links.split(',');
for(n = 0; n < tmp_links.length; n++) {
if(tmp_links[n] == toLink) LibJavascript.Array.remove(tmp_links, n);
}
itemsHTML[m].links = tmp_links.join(',');
}
if(typeof (itemsHTML[m].father) != '' && itemsHTML[m].name == toLink) {
tmp_father = itemsHTML[m].father.split(',');
for(n = 0; n < tmp_father.length; n++) {
if(tmp_father[n] == fromLink) LibJavascript.Array.remove(tmp_father, n);
}
itemsHTML[m].father = tmp_father.join(',');
}
}
}
//END CUSTOM CMS PER LINK
countindex = tmpn;
itemsHTML = tmp;
index = null;
Properties();
writeHTML(true);
drawLinks(true);
document.body.style.cursor = 'default';
Ctrl("canvasitems").onmousedown = null;
}
// disegna le linee link
var links = '';
function drawLinks(flag) {
if(flag)
links = '';
var ss, item_p;
var bcolor = '#AAAAAA';
var idtmp;
var idtmp_Obj;
var main_Item;
Ctrl("canvaslinks").innerHTML = '';
var cl = CanvasLib.Init("canvaslinks", Ctrl("canvaslinks").offsetWidth, Ctrl("canvaslinks").offsetHeight);
cl.SetAttrib(bcolor, 0.5);
/*
for(var n=0;n<itemsHTML.length;n++){
main_Item=itemsHTML[n]
if(main_Item.type=='Link'){
}
}
*/
for(var n = 0; n < itemsHTML.length; n++) {
main_Item = itemsHTML[n];
var name_from, name_to;
if(typeof (main_Item.links) != 'undefined' && Trim(main_Item.links) != '') {
//CUSTOM CMS PER LINK
if(isCMS) {
name_from = main_Item.alias;
} else {
name_from = main_Item.name;
}
//END CUSTOM CMS PER LINK
ss = main_Item.links.split(","); //multi link divisi da ','
for(var x = 0; x < ss.length; x++) {
for(var p = 0; p < itemsHTML.length; p++) {
item_p = itemsHTML[p];
//CUSTOM CMS PER LINK
if(isCMS) {
if(ss[x] == item_p.alias) { //collega il nome all id
idtmp = item_p.id;
name_to = item_p.alias;
break;
}
} else {
if(ss[x] == item_p.name) { //collega il nome all id
idtmp = item_p.id;
name_to = item_p.name;
break;
}
}
//FINE CUSTOM PER LINK
}
idtmp_Obj = Ctrl(idtmp);
main_Item = Ctrl(main_Item.id);
if(idtmp_Obj != null) {
var obj_from = main_Item;
var obj_to = idtmp_Obj;
var fX = obj_from.offsetLeft + obj_from.offsetWidth / 2;
var fY = obj_from.offsetTop + obj_from.offsetHeight / 2;
var rangeX1 = obj_to.offsetLeft - 100;
var rangeX2 = obj_to.offsetLeft + obj_to.offsetWidth + 100;
var tX = obj_to.offsetLeft + obj_to.offsetWidth / 2;
var tY = obj_to.offsetTop - 13;
var pos = "";
if(obj_from.offsetLeft < rangeX2 && obj_from.offsetLeft > rangeX1) { //bottom-top
if(obj_from.offsetTop < obj_to.offsetTop) { //top
tX = obj_to.offsetLeft + parseInt(obj_to.offsetWidth / 2) - 2;
tY = obj_to.offsetTop - 15;
pos = "top";
} else { //bottom
tX = obj_to.offsetLeft + parseInt(obj_to.offsetWidth / 2) + 3;
tY = obj_to.offsetTop + obj_to.offsetHeight;
pos = "bottom";
}
} else { //left-right
if(obj_from.offsetLeft < rangeX1) { //left
tX = obj_to.offsetLeft - 5;
tY = obj_to.offsetTop + 18;
pos = "left";
} else { //right
tX = obj_to.offsetLeft + obj_to.offsetWidth + 5;
tY = obj_to.offsetTop + 18;
pos = "right";
}
}
cl.DrawLine(fX, fY, tX, tY, true);
var lArrow = 0;
var tArrow = 0;
switch(pos) {
case "top":
lArrow = obj_to.offsetLeft + parseInt(obj_to.offsetWidth / 2) - 5;
tArrow = obj_to.offsetTop - 14;
break;
case "bottom":
lArrow = obj_to.offsetLeft + parseInt(obj_to.offsetWidth / 2);
tArrow = obj_to.offsetTop + obj_to.offsetHeight - 4;
break;
case "left":
lArrow = obj_to.offsetLeft - 6;
tArrow = obj_to.offsetTop + 15;
break;
case "right":
lArrow = obj_to.offsetLeft + obj_to.offsetWidth - 1;
tArrow = obj_to.offsetTop + 15;
break;
}
cl.SetAttrib(bcolor, 0.5);
// if(IsIE()){
// lArrow=parseInt(lArrow/2);
// tArrow=parseInt(tArrow/2);
// }
cl.DrawArrow(6, 6, lArrow, tArrow, pos);
var linkPropY, linkPropX;
for(var j = 0; j < itemsHTML.length; j++) {
if(itemsHTML[j].type == 'Link') {
if(itemsHTML[j].to == name_to && itemsHTML[j].from == name_from) {
switch(pos) {
case "top":
linkPropX = lArrow + 12;
linkPropY = tArrow - 12;
break;
case "bottom":
linkPropX = lArrow + 15;
linkPropY = tArrow;
break;
case "left":
linkPropX = lArrow - 40;
linkPropY = tArrow - 4;
break;
case "right":
linkPropX = lArrow + 15;
linkPropY = tArrow;
break;
}
Ctrl(itemsHTML[j].id).style.top = linkPropY + 'px';
Ctrl(itemsHTML[j].id).style.left = linkPropX + 'px';
itemsHTML[j].x = linkPropX;
itemsHTML[j].y = linkPropY;
}
}
}
}
}
}
}
checkMargins();
}
cancelEvent = function (e) {
// blocca la propagazione
e = (e) ? e : window.event;
//e.cancelBubble = true;
if(window.event)
window.event.cancelBubble = true;
else
e.cancelBubble = true;
if(e.stopPropagation) e.stopPropagation();
//e.returnValue=false
};
// Funzioni di trascinamento items ####################################
var deltax = 0,
deltay = 0,
dx, dy; // distanze del punto di click dall origine dell item
function setShadow() {
Ctrl("canvas").onmousemove = null;
if(!Empty(mainitem)) mainitem.onmouseup = null;
moveItems();
// moveLinks();
//GM
for(var p = 0; p < itemsHTML.length; p++) {
if(itemsHTML[p].shadow != "") {
var elementShadow = Ctrl(itemsHTML[p].shadow);
elementShadow.innerHTML = "";
}
if(itemsHTML[p].from == "item"+mainitem.id.substr(6)) {
document.getElementById(itemsHTML[p].id).classList.add("visible");
}
}
//GM
Properties();
drawLinks(true);
}
//Funzioni di allineamento
function alignItems(side) {
var p;
if(!Empty(mainitem)) {
switch(side) {
case 'left':
for(p = 0; p < itemsHTML.length; p++) {
if(itemsHTML[p].shadow != mainitem.id && itemsHTML[p].shadow != '') {
Ctrl(itemsHTML[p].shadow).style.left = mainitem.offsetLeft + 'px';
itemsHTML[p].x = mainitem.offsetLeft;
}
}
moveItems();
break;
case 'top':
for(p = 0; p < itemsHTML.length; p++) {
if(itemsHTML[p].shadow != mainitem.id && itemsHTML[p].shadow != '') {
Ctrl(itemsHTML[p].shadow).style.top = mainitem.offsetTop + 'px';
itemsHTML[p].y = mainitem.offsetTop;
}
}
moveItems();
break;
case 'right':
for(p = 0; p < itemsHTML.length; p++) {
if(itemsHTML[p].shadow != mainitem.id && itemsHTML[p].shadow != '') {
Ctrl(itemsHTML[p].shadow).style.left = (mainitem.offsetLeft + mainitem.offsetWidth - Ctrl(itemsHTML[p].shadow).offsetWidth) + 'px';
itemsHTML[p].x = mainitem.offsetLeft + mainitem.offsetWidth - Ctrl(itemsHTML[p].shadow).offsetWidth;
}
}
moveItems();
break;
case 'bottom':
for(p = 0; p < itemsHTML.length; p++) {
if(itemsHTML[p].shadow != mainitem.id && itemsHTML[p].shadow != '') {
Ctrl(itemsHTML[p].shadow).style.top = (mainitem.offsetTop + mainitem.offsetHeight - Ctrl(itemsHTML[p].shadow).offsetHeight) + 'px';
itemsHTML[p].x = mainitem.offsetTop + mainitem.offsetHeight - Ctrl(itemsHTML[p].shadow).offsetHeight;
}
}
moveItems();
break;
}
drawLinks(true);
} else {
alert('No page selected');
}
}
function selectItem(itm) {
SetOnEditProp(false);
var selecteditem;
mainitem = itm;
selecteditem = mainitem.id.substr(6);
if(index == selecteditem) return;
// trova lindice del mainitem
for(var i = 0; i < itemsHTML.length; i++) {
if(itemsHTML[i].shadow == mainitem.id)
index = i;
}
Properties();
EmptyRefLines();
addRulersLines();
}
function selectItemByName(name) {
for(var i = 0; i < itemsHTML.length; i++) {
if(itemsHTML[i].name == name) {
if(i == index) return;
else selectedItem(itemsHTML[i]);
break;
}
}
}
// --------- EXPORT ----------- //
/**
* Ottiene JDEF e aggiunge Versione e Tool
*/
function getJDEF(){
var getJDef = save2("false","", "getJDEF");
let toolType = "plan";
let versionTool = formProp.version;
let newJDefStringify = {
tool: toolType,
version: versionTool,
def: getJDef,
name : currentname
}
return newJDefStringify;
}