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

/*
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);
}