You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
446 lines
13 KiB
446 lines
13 KiB
/* |
|
Copyright (c) 2012-2017 Open Lab |
|
Permission is hereby granted, free of charge, to any person obtaining |
|
a copy of this software and associated documentation files (the |
|
"Software"), to deal in the Software without restriction, including |
|
without limitation the rights to use, copy, modify, merge, publish, |
|
distribute, sublicense, and/or sell copies of the Software, and to |
|
permit persons to whom the Software is furnished to do so, subject to |
|
the following conditions: |
|
|
|
The above copyright notice and this permission notice shall be |
|
included in all copies or substantial portions of the Software. |
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|
*/ |
|
|
|
function centerPopup(url, target, w, h, scroll, resiz) { |
|
var winl = (screen.width - w) / 2; |
|
var wint = (screen.height - h) / 2; |
|
var winprops = 'height=' + h + ',width=' + w + ',top=' + wint + ',left=' + winl + ',scrollbars=' + scroll + ',resizable=' + resiz + ', toolbars=false, status=false, menubar=false'; |
|
var win = window.open(url, target, winprops); |
|
if (!win) |
|
alert("A popup blocker was detected: please allow them for this application (check out the upper part of the browser window)."); |
|
if (parseInt(navigator.appVersion) >= 4) { |
|
win.window.focus(); |
|
} |
|
} |
|
|
|
function openCenteredWindow(url, target, winprops) { |
|
var prop_array = winprops.split(","); |
|
var i = 0; |
|
var w = 800; |
|
var h = 600; |
|
if (winprops && winprops != '') { |
|
while (i < prop_array.length) { |
|
if (prop_array[i].indexOf('width') > -1) { |
|
s = prop_array[i].substring(prop_array[i].indexOf('=') + 1); |
|
w = parseInt(s); |
|
} else if (prop_array[i].indexOf('height') > -1) { |
|
s = prop_array[i].substring(prop_array[i].indexOf('=') + 1); |
|
h = parseInt(s); |
|
} |
|
i += 1; |
|
} |
|
var winl = (screen.width - w) / 2; |
|
var wint = (screen.height - h) / 2; |
|
winprops = winprops + ",top=" + wint + ",left=" + winl; |
|
} |
|
win = window.open(url, target, winprops); |
|
if (!win) |
|
alert("A popup blocker was detected: please allow them for this application (check out the upper part of the browser window)."); |
|
if (parseInt(navigator.appVersion) >= 4) { |
|
win.window.focus(); |
|
} |
|
} |
|
|
|
function showFeedbackMessage(typeOrObject, message, title, autoCloseTime) { |
|
|
|
if(!autoCloseTime) |
|
autoCloseTime = 0; |
|
|
|
//console.debug("showFeedbackMessage",typeOrObject, message, title); |
|
var place = $("#__FEEDBACKMESSAGEPLACE"); |
|
var mess; |
|
if (typeof(typeOrObject)=="object" ) |
|
mess=typeOrObject; |
|
else |
|
mess = {type:typeOrObject, message:message,title:title}; |
|
//if exists append error message |
|
var etm = $(".FFC_"+mess.type+":visible ._errorTemplateMessage"); |
|
if(etm.length>0){ |
|
etm.append("<hr>"+(mess.title?"<b>"+mess.title+"</b><br>":"")+mess.message+"<br>"); |
|
}else{ |
|
etm = $.JST.createFromTemplate(mess, "errorTemplate"); |
|
place.append(etm); |
|
place.fadeIn(); |
|
} |
|
|
|
if(autoCloseTime >0) |
|
setTimeout(function(){ |
|
etm.fadeOut(); |
|
},autoCloseTime); |
|
|
|
$(".FFC_OK").stopTime("ffchide").oneTime(1500, "ffchide",function () {$(this).fadeOut(400,function(){$(this)})}); |
|
$(".FFC_WARNING").stopTime("ffchide").oneTime(75000, "ffchide",function () {$(this).fadeOut(400,function(){$(this)})}); |
|
$(".FFC_ERROR").stopTime("ffchide").oneTime(10000, "ffchide",function () {$(this).fadeOut(400,function(){$(this)})}); |
|
} |
|
|
|
function showFeedbackMessageInDiv(type, message, divId) { |
|
var place = $("#" + divId); |
|
var mess = {type:type, message:message}; |
|
place.prepend($.JST.createFromTemplate(mess, "errorTemplate")); |
|
place.fadeIn(); |
|
$("body").oneTime(1200, function () { |
|
$(".FFC_OK").fadeOut(); |
|
}); |
|
} |
|
function hideFeedbackMessages() { |
|
$("#__FEEDBACKMESSAGEPLACE").empty(); |
|
} |
|
|
|
|
|
function submitInBlack(formId, actionHref, w, h) { |
|
|
|
if (!w) |
|
w = $(window).width() - 100; |
|
if (!h) |
|
h = $(window).height() - 50; |
|
|
|
openBlackPopup('', w + "px", h + "px", null, formId + "_ifr"); |
|
var form = $("#" + formId); |
|
var oldAction = form.prop("action"); |
|
var oldTarget = form.prop("target"); |
|
form.prop("action", actionHref); |
|
form.prop("target", formId + "_ifr"); |
|
$(window).data("openerForm", form); |
|
form.submit(); |
|
form.prop("action", oldAction); |
|
if (oldTarget) |
|
form.prop("target", oldTarget); |
|
else |
|
form.removeAttr("target"); |
|
} |
|
|
|
|
|
var __popups = []; |
|
function createModalPopup(width, height, onCloseCallBack, cssClass, element, popupOpener) { |
|
//console.debug("createModalPopup"); |
|
|
|
|
|
if (typeof(disableUploadize)=="function") |
|
disableUploadize(); |
|
|
|
// se non diversamenete specificato l'openere è la window corrente; |
|
popupOpener = popupOpener || window; |
|
|
|
if (!width) |
|
width = "80%"; |
|
|
|
if (!height) |
|
height = "80%"; |
|
|
|
var localWidth=width,localHeight=height; |
|
|
|
if (typeof (width)=="string" && width.indexOf("%")>0 ) { |
|
localWidth = function () {return ($(window).width() * parseFloat(width)) / 100}; |
|
} |
|
|
|
if (typeof (height)=="string" && height.indexOf("%")>0) |
|
localHeight = function(){return ($(window).height() * parseFloat(height)) / 100}; |
|
|
|
var popupWidth = localWidth, popupHeight = localHeight; |
|
|
|
if(typeof localWidth == "function") |
|
popupWidth = localWidth(); |
|
|
|
if(typeof localHeight == "function") |
|
popupHeight = localHeight(); |
|
|
|
popupWidth = parseFloat(popupWidth); |
|
popupHeight = parseFloat(popupHeight); |
|
|
|
if (typeof onCloseCallBack == "string") |
|
cssClass = onCloseCallBack; |
|
|
|
//$("#__popup__").remove(); |
|
|
|
var popupN = __popups.length+1; |
|
__popups.push("__popup__" + popupN); |
|
|
|
var isInIframe = isIframe(); |
|
|
|
var bg = $("<div>").prop("id", "__popup__" + popupN); |
|
bg.addClass("modalPopup" + (isInIframe ? " inIframe" : "")).hide(); |
|
|
|
if (cssClass) |
|
bg.addClass(cssClass); |
|
|
|
function getMarginTop(){ |
|
var mt = ($(window).height() - popupHeight)/2 - 100; |
|
return mt < 0 ? 10 : mt; |
|
} |
|
|
|
var internalDiv=$("<div>").addClass("bwinPopupd").css({ width:popupWidth, minHeight:popupHeight, marginTop: getMarginTop(), maxHeight:$(window).height()-20, overflow: "auto" }); |
|
|
|
$(window).off("resize.popup"+popupN).on("resize.popup"+popupN, function(){ |
|
|
|
if(typeof localWidth == "function") |
|
popupWidth = localWidth(); |
|
|
|
if(typeof localHeight == "function") |
|
popupHeight = localHeight(); |
|
|
|
internalDiv.css({ width:popupWidth, minHeight:popupHeight }); |
|
|
|
var w = internalDiv.outerWidth() > $(window).width()-20 ? $(window).width()-20 : popupWidth; |
|
var h = internalDiv.outerHeight() > $(window).height()-20 ? $(window).height()-20 : popupHeight; |
|
|
|
internalDiv.css({ marginTop: getMarginTop(), minHeight: h, maxHeight:$(window).height()-20,minWidth: w }); |
|
|
|
}); |
|
|
|
bg.append(internalDiv); |
|
|
|
var showBG = function(el, time, callback){ |
|
|
|
if (isInIframe) { |
|
internalDiv.css({marginTop: -50 }); |
|
el.show(); |
|
internalDiv.animate({marginTop: 0}, (time/2), callback); |
|
} else { |
|
internalDiv.css({opacity: 0, top: -50}).show(); |
|
el.fadeIn(time, function () { |
|
internalDiv.animate({top: 0, opacity: 1}, time/3, callback); |
|
}); |
|
} |
|
|
|
/* |
|
if(isInIframe) { |
|
internalDiv.css({marginTop: -1000 }); |
|
el.show(); |
|
internalDiv.animate({marginTop: 0}, (time * 2), callback); |
|
}else{ |
|
internalDiv.css({opacity:0, top: -500}).show(); |
|
el.fadeIn(time, function(){ |
|
internalDiv.animate({top: 0, opacity:1}, time, callback); |
|
}); |
|
} |
|
*/ |
|
|
|
return this; |
|
}; |
|
|
|
if(!element) |
|
$("#twMainContainer").addClass("blur"); |
|
|
|
showBG(bg, 300, function(){}) |
|
bg.on("click",function(event){ |
|
if ($(event.target).closest(".bwinPopupd").length <= 0) |
|
bg.trigger("close"); |
|
}); |
|
|
|
var close = $("<span class=\"teamworkIcon close popUpClose\" style='cursor:pointer;position:absolute;'>x</span>"); |
|
internalDiv.append(close); |
|
|
|
close.click(function () { |
|
bg.trigger("close"); |
|
}); |
|
|
|
$("body").css({overflowY:"hidden"}); |
|
|
|
if(!element){ |
|
$("body").append(bg); |
|
}else{ |
|
element.after(bg); |
|
} |
|
|
|
//close call callback |
|
bg.on("close", function () { |
|
var callBackdata = $(this).data("callBackdata"); |
|
var ndo=bg; |
|
|
|
if (typeof (enableUploadize)=="function") |
|
enableUploadize(); |
|
|
|
//console.debug("ndo",ndo); |
|
|
|
var alertMsg; |
|
var ifr=bg.find("iframe"); |
|
|
|
if (ifr.length>0){ |
|
try { |
|
alertMsg = ifr.get(0).contentWindow.alertOnUnload(); |
|
}catch (e){} |
|
} else { |
|
alertMsg=alertOnUnload(ndo); |
|
} |
|
|
|
if (alertMsg){ |
|
if (!confirm(alertMsg)) |
|
return; |
|
} |
|
|
|
bg.fadeOut(100, function () { |
|
|
|
$(window).off("resize.popup"+popupN); |
|
bg.remove(); |
|
__popups.pop(); |
|
|
|
if (__popups.length == 0) |
|
$("#twMainContainer").removeClass("blur"); |
|
|
|
if (typeof(onCloseCallBack) == "function") |
|
onCloseCallBack(callBackdata); |
|
|
|
$("body").css({overflowY: "auto"}); |
|
}); |
|
|
|
}); |
|
|
|
//destroy do not call callback |
|
bg.on("destroy", function () { |
|
bg.remove(); |
|
$("body").css({overflowY: "auto"}); |
|
}); |
|
|
|
//rise resize event in order to show buttons |
|
$("body").oneTime(1000,"br",function(){$(this).resize();}); // con meno di 1000 non funziona |
|
|
|
|
|
//si deposita l'popupOpener sul bg. Per riprenderlo si usa getBlackPopupOpener() |
|
bg.data("__opener",popupOpener); |
|
|
|
return internalDiv; |
|
} |
|
|
|
function changeModalSize(w,h){ |
|
var newDim = {}; |
|
if(w) |
|
newDim.width = w; |
|
if(h) |
|
newDim.minHeight = h; |
|
|
|
var isInIframe = isIframe(); |
|
var popUp = isInIframe ? window.parent.$(".bwinPopupd") : $(".bwinPopupd"); |
|
|
|
if(popUp.length) |
|
popUp.delay(300).animate(newDim, 200); |
|
} |
|
|
|
function openBlackPopup(url, width, height, onCloseCallBack, iframeId, cssClass) { |
|
|
|
if (!iframeId) |
|
iframeId = "bwinPopupIframe"; |
|
|
|
//add black only if not already in blackpupup |
|
var color= cssClass ? cssClass + " iframe" : "iframe"; |
|
|
|
var ndo = top.createModalPopup(width, height, onCloseCallBack, color,null,window); |
|
|
|
//ndo.closest(".modalPopup ").data("__opener",window); // si deposita il vero opener |
|
|
|
var isInIframe = isIframe(); |
|
|
|
ndo.append("<div class='bwinPopupIframe_wrapper'><iframe id='" + iframeId + "' name='" + iframeId + "' frameborder='0'></iframe></div>"); |
|
ndo.find("iframe:first").prop("src", url).css({width:"100%", height:"100%", backgroundColor: isInIframe ? '#F9F9F9' : '#FFFFFF'}); |
|
} |
|
|
|
function getBlackPopup() { |
|
var ret=$([]); |
|
if (__popups.length>0) { |
|
var id = __popups[__popups.length - 1]; |
|
ret = $("#" + id); |
|
} |
|
if (ret.length==0 && window!=top) { |
|
ret = window.parent.getBlackPopup(); |
|
} |
|
return ret; |
|
} |
|
|
|
|
|
function getBlackPopupOpener(){ |
|
return getBlackPopup().data("__opener") |
|
} |
|
|
|
function closeBlackPopup(callBackdata) { |
|
//console.debug("closeBlackPopup ",callBackdata); |
|
var bp = getBlackPopup(); |
|
|
|
if (callBackdata) |
|
bp.data("callBackdata",callBackdata); |
|
bp.trigger("close"); |
|
} |
|
|
|
function openPopUp(el,width,height){ |
|
var popup=createModalPopup(width,height); |
|
popup.append(el.clone().show()); |
|
} |
|
|
|
//returns a jquery object where to write content |
|
|
|
function isIframe() { |
|
var isIframe = false; |
|
try{ |
|
//try to access the document object |
|
if (self.location.href != top.location.href) |
|
isIframe = true; |
|
}catch(e) { |
|
//We don't have access, it's cross-origin! |
|
isIframe = true; |
|
} |
|
return isIframe; |
|
}; |
|
|
|
|
|
function openBulkAction(bulkDivId){ |
|
var popup=createModalPopup(500,300); |
|
popup.append($("#"+bulkDivId).clone().show()); |
|
} |
|
|
|
|
|
function refreshBulk(el) { |
|
//console.debug("refreshBulk") |
|
|
|
if (el.is(":checked")) |
|
el.closest("tr").addClass("selected"); |
|
else |
|
el.closest("tr").removeClass("selected"); |
|
|
|
var table=el.closest(".dataTable"); |
|
if (table.find(".selected :checked").length > 0) { |
|
|
|
$("#bulkOp #bulkRowSel").html(table.find("tbody > tr.selected").length + "/" + table.children("tbody").children("tr").length); |
|
|
|
var bukOpt = $("#bulkOp").clone().addClass("bulkOpClone"); |
|
bukOpt.fadeIn(200, function(){ |
|
$("#bulkPlace").html(bukOpt); |
|
$.tableHF.refreshTfoot(); |
|
}); |
|
|
|
} else { |
|
$(".bulkOpClone").fadeOut(200, function(){ |
|
$.tableHF.refreshTfoot(); |
|
}); |
|
} |
|
} |
|
|
|
function selUnselAll(el){ |
|
//var bulkCheckbox = $("#multi td [type='checkbox']"); |
|
var bulkCheckbox = el.closest(".dataTable").find("[type='checkbox']"); |
|
if (el.is(":checked")){ |
|
bulkCheckbox.prop("checked", true); |
|
bulkCheckbox.closest("tr").addClass("selected"); |
|
} else { |
|
bulkCheckbox.prop("checked", false); |
|
bulkCheckbox.closest("tr").removeClass("selected"); |
|
} |
|
|
|
refreshBulk(el); |
|
}
|
|
|