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