/* ------------------------------------------------------------------------ Project: The Social Required: jquery, gelesocial.js Copyright: 2011 - Gruppo editoriale L'Espresso spa Developers: M. Viganò, F. Zanchetta, G. Bottini, L. Convalle, E. Sabellico, E. Matteoli, L. "saibal" Forti ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------ Base functions - Provide interaction with social user data ------------------------------------------------------------------------- */ /* * TODO * Aggiungere un metodo sull'init che salva dentro una variabile i valori del cookie * */ /* JQUERY.COOKIE.JS */ jQuery.cookie=function(a,b,c){if(arguments.length>1&&String(b)!=="[object Object]"){c=jQuery.extend({},c);if(b===null||b===undefined){c.expires=-1}if(typeof c.expires==="number"){var d=c.expires,e=c.expires=new Date;e.setDate(e.getDate()+d)}b=String(b);return document.cookie=[encodeURIComponent(a),"=",c.raw?b:encodeURIComponent(b),c.expires?"; expires="+c.expires.toUTCString():"",c.path?"; path="+c.path:"",c.domain?"; domain="+c.domain:"",c.secure?"; secure":""].join("")}c=b||{};var f,g=c.raw?function(a){return a}:decodeURIComponent;return(f=(new RegExp("(?:^|; )"+encodeURIComponent(a)+"=([^;]*)")).exec(document.cookie))?g(f[1]):null}; $.cookie = jQuery.cookie; window.getCachedScript = function(script, success){ var options = { url: script, dataType: "script", cache: true, type: "GET", success: success } jQuery.ajax(options); } window.locationHrefWithoutHash = function(){ return document.location.href.split("#")[0] } GeleSocial = {version: 2} /* SETTINGS PARAMETER MAP */ GeleSocial.settings = { debug : false, test: false, pageId : "", ignoreSocialLogged: null, statusChangeCallbacks: [], kw_cookie: "", kw_neg_cookie: "", socialDataUrl : null, openWindowProfiles: { "facebook-share": {width:640,height:400,center:1,createnew:0,scrollbars:0} ,"login":{width:700,height:570,center:1,createnew:0,scrollbars:1} }, gigya: { sdk: '//cdn.gigya.com/JS/socialize.js', conf: {"autoLogin":false,"connectWithoutLoginBehavior":"alwaysLogin","forceAuthentication":"true","shortURLs":"never","enabledProviders":"facebook,twitter,google,linkedin"}, timeout: 15000 }, shadowbox: {handleOversize: "none", width: 700, height: 570}, ws: {} }; GeleSocial.settings.gigya.conf.facebookInitParams = {channelUrl: window.location.protocol + "//" + window.location.host + "/social/common/channel_url.cache.php"} try { if($.cookie("kwdebug") && $.cookie("kwdebug") == "true"){ window.kwdebug = true; } } catch(e){} if(window.kwdebug || window.location.href.indexOf("kwdebug=true") > 0) GeleSocial.settings.debug = true; GeleSocial.status = { gigya: { logged: false, // si è loggati su gigya sameUser: false, // l'utente è loggato su Gigya con lo stesso utente dell'SSO isSiteUID: false, // l'applicazione è autorizzata isSiteLogged: false, // l'utente è loggato tramite l'SSO preventAutologin: false, // blocca l'esecuzione dell'autologin autologin: false, // sarà (o è stato) fatto l'autologin autologinDone: false, // è stato fatto l'autologin (con successo o meno) loaded: false, // è stato caricato lo stato dell'utente su gigya blocked: undefined, // gigya è bloccato (inizialmente non si sa) activeProviders: [], // providers la cui identity NON è scaduta (isExpiredSession) expiredProviders: [], // providers la cui identity è scaduta (isExpiredSession) realLoginProvider: "site" }, logged: false, // si è loggati sul nostro SSO transitional: true, // lo stato è temporaneo (può diventare definitivo o subito dopo loaded = true o dopo l'autologin) loaded: false, // è stato letto lo stato dell'utente sull'SSO tramite il cookie redisError: false, // si è verificato un timeout nella lettura dal redis negativeCookie: false }; GeleSocial.lastNotifiedStatus = jQuery.extend(true, {}, GeleSocial.status); GeleSocial.initLogging = function(debug, testConsole){ var consolePresent = window.console; if(!window.console){ window.console = {log: function(){}}}; if(!window.console.log) window.console.log = function(){} if(!debug){ window.console.log = function(){} } if(!window.console.error) window.console.error = window.console.log; }; GeleSocial.initLogging(GeleSocial.settings.debug, GeleSocial.settings.test ? "/social/common/js/test-console.js": false); GeleSocial.ignoreRulesMatch = function(rules){ if(rules){ var loc = window.location.href; var match = false; jQuery.each(rules, function(i, rule){ match = loc.match(rule); if(match) return false; }); return match; } else return false; } GeleSocial.settings.ignoreSocialLogged = function(){ if(GeleSocial.status.gigya.preventAutologin) return true; var disableAutoLogin = GeleSocial.settings.disableAutoLogin; function compile(rules){ var baseUrl = GeleSocial.ws.settings.BASE_URL; if(!baseUrl || !rules) return null; else { if(baseUrl[baseUrl.length-1]!="/"){ baseUrl = baseUrl + "/"; } baseUrl = GeleSocial.utils.regExpQuote(baseUrl); } var rules1 = []; var hasAll = jQuery.grep(rules, function(a, i){ return a == "__all__"; }).length > 0; if(hasAll){ rules1.push("^.*$"); } else { jQuery.each(rules, function(i,a){ if(a=="__home__"){ rules1.push("^" + baseUrl + "[^/]*$"); } else { a = GeleSocial.utils.regExpQuote(a); rules1.push("^" + baseUrl + a + "([/?#].*)?$"); } }); } rules = rules1; return rules; } if(!disableAutoLogin && GeleSocial.settings.disableAutoLoginRegexp){ return GeleSocial.ignoreRulesMatch(GeleSocial.settings.disableAutoLoginRegexp); } else if(disableAutoLogin){ disableAutoLogin = compile(disableAutoLogin); return GeleSocial.ignoreRulesMatch(disableAutoLogin); } else return false; } GeleSocial.addInitCallback = function(callback){ GeleSocial.addStatusChangeCallback(function(last, current){ if(last.gigya.blocked === undefined && current.gigya.blocked !== undefined){ callback(); } }); } GeleSocial.addFinalStatusCallback = function(callback){ GeleSocial.addStatusChangeCallback(function(last, current){ if(last.transitional && !current.transitional){ callback(); } }); } GeleSocial.addStatusChangeListener = function(page, listener){ var current = GeleSocial.status; if(listener.initialized && current.initialized) listener.initialized(page); if(listener.downloaded && current.gigya.blocked !== undefined) listener.downloaded(page); if(!current.transitional){ if(current.logged && listener.logged) listener.logged(page); else if(!current.logged && listener.notlogged) listener.notlogged(page); if(listener.finalized) listener.finalized(page); } GeleSocial.addStatusChangeCallback(function(last, current){ if(last.initialized === undefined && current.initialized){ if(listener.initialized) listener.initialized(page); } // nel momento in cui si sa se gigya è bloccato o no if(last.gigya.blocked === undefined && current.gigya.blocked !== undefined){ if(listener.downloaded) listener.downloaded(page); } // quando lo stato passa da temporaneo a definitivo if(last.transitional && !current.transitional){ if(current.logged && listener.logged) listener.logged(page); else if(!current.logged && listener.notlogged) listener.notlogged(page); if(listener.finalized) listener.finalized(page); } }); } GeleSocial.addStatusChangeCallback = function(callback){ if(GeleSocial.settings && GeleSocial.settings.statusChangeCallbacks){ GeleSocial.settings.statusChangeCallbacks.push(callback); } } GeleSocial.notifyStatusChange = function(){ if(GeleSocial.settings && GeleSocial.settings.statusChangeCallbacks){ jQuery(GeleSocial.settings.statusChangeCallbacks).each(function(i,statusChangeCallback){ statusChangeCallback(GeleSocial.lastNotifiedStatus, GeleSocial.status); }) GeleSocial.lastNotifiedStatus = jQuery.extend(true, {}, GeleSocial.status); } } if(!GeleSocial.gigya) GeleSocial.gigya = {}; GeleSocial.gigya.redirectTo = function(url1, error, backurlParams){ var callback = function(res){ if(res.user && res.user.UID && res.user.UIDSignature && res.user.signatureTimestamp){ var UID = res.user.UID; var UIDSignature = res.user.UIDSignature; var signatureTimestamp = res.user.signatureTimestamp; var newParams = {"UID": UID,"UIDSignature": UIDSignature,"signatureTimestamp": signatureTimestamp}; var getUrlParams = function(url) { var vars = {}; var parts = url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { vars[unescape(key)] = unescape(value); }); return vars; } var urlParams = getUrlParams(url1); $.extend(urlParams, newParams); if(urlParams["backurl"] && urlParams["backurl"].indexOf("/") == 0) urlParams["backurl"] = "http://" + document.domain + urlParams["backurl"]; if(urlParams["errorpage"] && urlParams["errorpage"].indexOf("/") == 0) urlParams["errorpage"] = "http://" + document.domain + urlParams["errorpage"]; if(urlParams["backurl"] && backurlParams) urlParams["backurl"] += "&" + $.param(backurlParams); var baseUrl = url1.substring(0, url1.indexOf("?")); var form = $("
"); jQuery.each(urlParams, function(k, v){ form.append($("")); }) $("body").append(form); form.submit(); } else if(error){ error(); } } gigya.socialize.getUserInfo({ includeAllIdentities: false, signIDs: true, callback: callback }); }; /* INIZIO METODI RIGUARDANTI LA MODALE */ GeleSocial.openModal = function(iframeSrc, content, width, height) { if(!window.Shadowbox){if(window.console) window.console.log("Shadowbox non è incluso in pagina");} else { var settings = $.extend({}, this.settings.shadowbox); var player = 'html'; if(iframeSrc!==undefined && iframeSrc!==null){ player = 'iframe'; content = iframeSrc; } settings.content = content; settings.player = player; if(width) settings.width = width; if(height) settings.height = height; //if(window.Shadowbox.isOpen()) window.Shadowbox.close(); if(player=="iframe" && window.Shadowbox.isOpen()){ setTimeout(function(){ var frame = $("#sb-player"); frame[0].src = settings.content; frame.contents().find("body").html(""); GeleSocial.resizeModal(settings.width, settings.height); }, 1000); } else { window.Shadowbox.open(settings); } } } GeleSocial.trackingParam = function(element, paramName, addLinkPosition){ if(window.trackLiveLinks) window.trackLiveLinks(element, paramName, addLinkPosition); else { // temporaneo, da eliminare quando interstitial.js sarà su tutte le pagine $("a",element).live("mousedown", function(){ var href = $(this).attr("href"); if(href && href.indexOf('http') == 0 && href.indexOf(paramName) < 0){ if(href.indexOf('?') > 0){ href += "&"; } else href += "?"; var ref = paramName; if(addLinkPosition){ var position1 = $(element).find("a").index($(this)); ref += "-" + (position1 + 1); } href += "ref=" + ref; $(this).attr("href", href); } }); } } GeleSocial.closeModal = function(){ if(window.Shadowbox) window.Shadowbox.close(); } GeleSocial.changedContentModal = function(content){ if(window.Shadowbox) $('#'+window.Shadowbox.skin.body.id).html(content); } GeleSocial.resizeModal = function(width, height){ if(window.Shadowbox) window.Shadowbox.skin.dynamicResize(width, height); } GeleSocial.showFormRegistration = function(backurl,optbackurl, parameters, here){ if(this.settings.baseUrlSocial && this.settings.registrationPage){ if(parameters) parameters = jQuery.param(parameters) + "&"; else parameters = ""; backurl = GeleSocial.loginUrl(backurl); if(!optbackurl) optbackurl = backurl; backurl = escape(this.settings.baseUrlSocial + "loader.php?" + parameters + "mClose=2&backUrl=" + escape(backurl)); optbackurl = escape(this.settings.baseUrlSocial + "loader.php?" + parameters + "mClose=2&backUrl=" + escape(optbackurl)); var url4redirect = this.settings.registrationPage + "?backurl=" + backurl+ "&optbackurl=" + optbackurl; if(GeleSocial.status.redisError || GeleSocial.status.gigya.blocked){ GeleSocial.openMessageModal(); } else { if(here) window.location.href = url4redirect; else GeleSocial.openModal(url4redirect, null, 920, 700); } } } GeleSocial.showBenefits = function(backurl, parameters, here){ if(this.settings.baseUrlSocial && this.settings.benefitsPage){ if(parameters) parameters = jQuery.param(parameters) + "&"; else parameters = ""; backurl = GeleSocial.loginUrl(backurl); backurl = escape(this.settings.baseUrlSocial + "loader.php?" + parameters + "mClose=2&backUrl=" + escape(backurl)); var url4redirect = this.settings.benefitsPage + "?" + parameters + "backurl=" + backurl + "&ssoOnly=false"; if(GeleSocial.status.redisError || GeleSocial.status.gigya.blocked){ GeleSocial.openMessageModal(); } else { if(here) window.location.href = url4redirect; else GeleSocial.openModal(url4redirect, null, 920, 700); } } } GeleSocial.openWindow = function(url, profile){ if(GeleSocial.settings.openWindowProfiles && GeleSocial.settings.openWindowProfiles[profile]){ var settings = GeleSocial.settings.openWindowProfiles[profile]; if(settings.center==1) {settings.top=(screen.height-(settings.height+110))/2;settings.left=(screen.width-settings.width)/2;} var parameters = ""; jQuery.each(settings, function(k,v){ if(parameters.length>0) parameters += ","; if(v == 0) v="no"; else if(v == 1) v="yes"; else v = Math.floor(v); parameters += k + "=" + v; }) var name="PopupWindow" + profile; if(GeleSocial.__openedWindows && GeleSocial.__openedWindows[name] && !GeleSocial.__openedWindows[name].closed){ GeleSocial.__openedWindows[name].focus(); ret = GeleSocial.__openedWindows[name]; } else { var open = function(){var ret = window.open(url,name,parameters);ret.focus();return ret;}; if(console) console.log("opening url " + url + " name: " + name + " parameters: " + parameters); var ret = open(); if(!GeleSocial.__openedWindows) GeleSocial.__openedWindows = {}; GeleSocial.__openedWindows[name] = ret; } return ret; } } GeleSocial.openLoginModal = function(ssoOnly, backurl, parameters, here, facebookOnly){ if(this.settings.baseUrlSocial && this.settings.loginPage){ if(parameters) parameters = jQuery.param(parameters) + "&"; else parameters = ""; if(ssoOnly===undefined) ssoOnly = false; backurl = GeleSocial.loginUrl(backurl); backurl = escape(this.settings.baseUrlSocial + "loader.php?" + parameters + "mClose=2&backUrl=" + escape(backurl)); if(facebookOnly && this.settings.loginOnlyFacebookPage){ var url4redirect = this.settings.loginOnlyFacebookPage; } else { var url4redirect = this.settings.loginPage; } url4redirect += "?" + parameters + "backurl=" + backurl + "&optbackurl=" + backurl + "&ssoOnly="+ssoOnly; if(GeleSocial.status.redisError || GeleSocial.status.gigya.blocked){ GeleSocial.openMessageModal(); } else { if(here) window.location.href = url4redirect; else { if(facebookOnly) GeleSocial.openModal(url4redirect, null, 500, 300); else GeleSocial.openModal(url4redirect); } } } } GeleSocial.openMessageModal = function(type, width, height, backurl){ var errorUrl = this.settings.baseUrlSocial + 'loader.php?mClose=5'; if(type) errorUrl += "&type=" + escape(type); if(backurl) errorUrl += "&backUrl=" + escape(backurl); GeleSocial.openModal(errorUrl, null, width, height); } GeleSocial.openLoginHere = function(ssoOnly, backurl, parameters){ GeleSocial.openLoginModal(ssoOnly, backurl, parameters, true); } GeleSocial.openSendingComment = function(){ GeleSocial.openMessageModal("sending_comment", 700, 300); } GeleSocial.openCommentSent = function(){ GeleSocial.openMessageModal("comment_sent", 700, 300); } GeleSocial.showModifyConnectionsUI = function(params){ var div = $(params.container); var loader = null; if(params.loader) loader = $(params.loader); var divOwner = document; if(div[0].ownerDocument) divOwner = div[0].ownerDocument; var bodyOwner = jQuery("body", divOwner); var htmlOwner = jQuery("html", divOwner); var backurl = params.backurl; var expired = {}; var active = {}; var enabledProviders = params.enabledProviders; if(!enabledProviders) enabledProviders = GeleSocial.settings.gigya.conf.enabledProviders.split(","); var activeProviders = GeleSocial.status.gigya.activeProviders; var expiredProviders = GeleSocial.status.gigya.expiredProviders; var allProviders = activeProviders.concat(expiredProviders); var socialProviders = jQuery.grep(allProviders, function(elem, index) { return elem !== "site"; }); jQuery.each(enabledProviders, function(i, a){ active[a] = jQuery.inArray(a, activeProviders) >= 0; expired[a] = jQuery.inArray(a, expiredProviders) >= 0; }); var close = function(error, backurl){ try { if(!error){ GeleSocial.openModal(backurl); } else { GeleSocial.openMessageModal(); } } catch(e){ if(window.opener) window.close(); } }; var removeConnection = function(provider){ if(loader){ loader.css('width', bodyOwner.width()); loader.css('height', htmlOwner.height()); loader.show(); } var data = {"remove": provider} $.ajax({ type: 'POST', url: GeleSocial.settings.baseUrlSocial + 'modifyconnections.php', data: data, dataType: "json", success: function(data) { if(!data || data.result != "ok"){ close(true); } else { if(socialProviders.length == 1 || provider == GeleSocial.status.gigya.realLoginProvider){ GeleSocial.startAutologin(backurl, undefined, {"modal": true, "action": "removealias"}); } else { var backurl1 = GeleSocial.settings.baseUrlSocial + "loader.php?mClose=8&action=removealias&backUrl=" + escape(backurl); close(false, backurl1); } } }, error: function(){close(true);} }); } var div1 = jQuery("", divOwner) div.append(div1); jQuery.each(enabledProviders, function(i,a){ var active1 = active[a]; var expired1 = expired[a]; var disconnected1 = !active1 && !expired1; var cont1 = jQuery("
  • ", divOwner); cont1.attr("id", "gs-gigya-login-" + a); cont1.addClass("gs-gigya-login"); if(active1){ cont1.addClass("gs-gigya-login-active"); } else if(expired1){ cont1.addClass("gs-gigya-login-expired"); } var cont2 = jQuery("
    ", divOwner); var loginUser = jQuery("
    ", divOwner); var loginLinks = jQuery("", divOwner); cont2.append(loginUser); cont2.append(loginLinks); cont1.append(cont2); var email = null; if(GeleSocial.status.gigya.user){ var user = GeleSocial.status.gigya.user; if(user.identities && user.identities[a]){ var identity = user.identities[a]; if(identity){ if(identity.email && identity.email.length > 0 ) email = identity.email; else if(identity.nickname && identity.nickname.length > 0) email = identity.nickname; if(email && GeleSocial.settings.test){ loginUser.append(email); } } } } var caption = jQuery("", divOwner); if(disconnected1){ caption.html("Associa a " + a); } else if(active1){ caption.html("Elimina associazione"); } else if(expired1){ caption.html("Rientra con " + a); } loginLinks.append(caption); if(expired1){ caption1 = jQuery("", divOwner); caption1.html("Elimina associazione"); loginLinks.append(" | "); loginLinks.append(caption1); } div1.append(cont1); if(!active1){ var addCapt = cont1; if(expired1) addCapt = caption; caption.click(function(){ GeleSocial.openAddConnectionWindow(a, backurl); }); if(expired1){ caption1.click(function(){ removeConnection(a); }); } } else { caption.click(function(){ removeConnection(a); }); } }); } GeleSocial.openModifyConnectionsModal = function(width, height){ if(!width || !height){ width = 500; height = 350; } var url4redirect = this.settings.baseUrlSocial + "modifyconnections.php"; GeleSocial.openModal(url4redirect, null, width, height); } GeleSocial.openLoginWindow = function(provider, backurl, parameters, isAdd){ if(parameters) parameters = jQuery.param(parameters) + "&"; else parameters = ""; backurl = GeleSocial.loginUrl(backurl); wndUrl = GeleSocial.settings.baseUrlSocial + "loader.php?" + parameters + "mClose=6"; if(isAdd){ wndUrl += "&add=true"; } wndUrl += "&provider=" + provider + "&backUrl=" + escape(backurl); GeleSocial.openWindow(wndUrl, "login"); } GeleSocial.openAddConnectionWindow = function(provider, backurl, parameters){ return GeleSocial.openLoginWindow(provider, backurl, parameters, true); } GeleSocial.goToMemberCenter = function(backurl){ backurl = GeleSocial.logOutUrl(backurl); backurl = this.settings.baseUrlSocial + "login4backoffice.php?backUrl=" + escape(backurl); document.location.href = backurl; } GeleSocial.sendChangePassword = function(confirm){ var me = this; var send = function(){ var url = me.settings.baseUrlSocial + "setpassword.php?invia=email"; var success = function(){ GeleSocial.openModal(me.settings.baseUrlSocial + "loader.php?mClose=5&type=changepwd_sent", null, 800, 300); }; var error = function(){ GeleSocial.openModal(me.settings.baseUrlSocial + "loader.php?mClose=5", null, 800, 300); }; $.ajax({ url: url, dataType: 'json', success: function (data) { if(data && data["result"] == "ok"){ success(); } else error(); }, error: error }); }; if(confirm){ GeleSocial.confirm("Confermi di voler cambiare la password?", function(answer){ if (answer){ send(); } }); } else { send(); } } /* FINE METODI RIGUARDANTI LA MODALE */ GeleSocial.alert = function(message){ if(window.dhtmlx){ window.dhtmlx.message(message); } else { alert(message); } } GeleSocial.confirm = function(message, callback){ if(window.dhtmlx){ dhtmlx.confirm({ type:"confirm", text: message, cancel: "Annulla", callback: callback }); } else { callback(confirm(message)); } } GeleSocial.Barrier = function(){ var me = this; this.finalCallback = null; this.finalized = false; this.numCallbacks = 0; this.addCallback = function(){me.numCallbacks++;} this.completed = function(){me.numCallbacks--; if(me.finalized && me.finalCallback && me.numCallbacks == 0) me.finalCallback();} this.wait = function(callback){ if(me.numCallbacks == 0) callback(); else { me.finalized = true; me.finalCallback = callback; } } } GeleSocial.MessageBox = function(messagebox){ var me = this; this.messagebox = $(messagebox); this.message = this.messagebox.find(".gs-message"); this.setVisible = function(visible){ if(visible) me.messagebox.addClass("gs-visible"); else { me.messagebox.removeClass("gs-visible"); me.setError(false); me.setLoading(false); } } this.setError = function(error){ if(error) me.messagebox.addClass("gs-error"); else me.messagebox.removeClass("gs-error"); } this.setMessage = function(html){ me.message.html(html); } this.setLoading = function(loading){ if(loading){ me.messagebox.addClass("gs-loading"); } else { me.messagebox.removeClass("gs-loading"); } } } GeleSocial.receiveMessages = function(){ var onResize = function(data){ var url = data.url; if(!url) return; var width = 700; var height = 450; if(url.indexOf("privato") >=0 || url.indexOf("benefits") >=0){ width = 920; height = 700; } else if (url.indexOf("login.registr.jsp") >=0){ width = 1000; height = 700; } GeleSocial.resizeModal(width, height); } var onMessage = function(e){ var data = null; try{ data = JSON.parse(e.originalEvent.data); } catch(e){} if(data && data.op == "redirectresize"){ onResize(data); } } $(window).bind("message", onMessage); } GeleSocial.init = function(settings) { if(!GeleSocial.settings.disableEverything){ $(document).ready(function(){ var barrier = new GeleSocial.Barrier(); if(!GeleSocial.utils.isNull(settings)) { GeleSocial.settings = $.extend(true, GeleSocial.settings, settings); } if(!GeleSocial.utils.isNull(GeleSocial.settings.ws)) { GeleSocial.settings.ws.BASE_URL = GeleSocial.settings.baseUrlSocial; GeleSocial.ws.init(GeleSocial.settings.ws) } var callback1 = function() { if(window.console) window.console.log("GeleSocial.init"); GeleSocial.status.initialized = true; GeleSocial.receiveMessages(); GeleSocial.notifyStatusChange(); GeleSocial.checkSocialStatus(); }; GeleSocial.dependencies.commonDependecies(barrier); GeleSocial.dependencies.siteDependecies(barrier); barrier.wait(callback1); }); } } GeleSocial.checkSocialStatus = function() { var me = this; try{ var initializeGigya = function() { if(me.status.gigya.blocked!==undefined) return; me.status.gigya.blocked = false; try { if(window.console) window.console.log("Gigya initialized"); GeleSocial.notifyStatusChange(); gigya.socialize.addConnection = function(){ var params = {}; jQuery.each(arguments, function(i,a){ params = jQuery.extend(true, params, a); }) if(params.provider){ if(params.containerID && gigya.socialize._closeComponent){ gigya.socialize._closeComponent('0@gigya.socialize.plugins.minishare@' + params.containerID, true); } GeleSocial.openAddConnectionWindow(params.provider); } } GeleSocial.getLoginStatus(); } catch(e){ if(window.console) window.console.error(e); } }; window.onGigyaServiceReady = function(serviceName) { if(serviceName != "socialize") return; GeleSocial.willGigyaAutologin(function(will){ if(will){ gigya.socialize.addEventHandlers({ onLogin: function(ev){initializeGigya();} }); } else { initializeGigya(); } }); }; var onError = function(){ if(me.status.gigya.blocked!==undefined) return; me.status.gigya.blocked = true; if(window.console) window.console.log("Gigya blocked"); GeleSocial.ugcInit(); } var user = GeleSocial.getUser(); var negCookieValue = GeleSocial.getCookie(this.settings.kw_neg_cookie); GeleSocial.status.negativeCookie = !GeleSocial.utils.isNull(negCookieValue); if(user || GeleSocial.status.negativeCookie){ me.settings.gigya.conf.autoLogin = false; } if(!window.gigya){ var gigyaSrc = me.settings.gigya.sdk + '?apikey=' + escape(me.settings.appId)+"&lang=it-IT"; var timeout = me.settings.gigya.timeout; if($.browser.msie && parseInt($.browser.version) <= 8) timeout = timeout * 2; setTimeout(onError, timeout); (function(d){ var js; js = d.createElement('script'); js.async = true; js.src = gigyaSrc; js.text = JSON.stringify(me.settings.gigya.conf); d.getElementsByTagName('head')[0].appendChild(js); }(document)); } else { window.onGigyaServiceReady(); } }catch(e){ if(window.console) window.console.log("ATTENZIONE! L'SDK NON È STATO CARICATO CORRETTAMENTE!!"); } } GeleSocial.withSocialData = function(callback){ if(!GeleSocial.utils.isNull(GeleSocial.settings.socialDataUrl)){ $.ajax({ url: GeleSocial.settings.socialDataUrl, dataType: 'json', success: function (data) { if(data){ for(k in data){ window[k] = data[k]; } callback(); } } }); } else { callback(); } } GeleSocial.withShareStats = function(pageId, callback, update){ var stats = GeleSocial.withShareStats.__stats; if(stats) callback(stats); else { if(!pageId || !GeleSocial.settings.baseUrlSocial) callback({}); else { var url = GeleSocial.settings.baseUrlSocial + "ws/facebook/sharestats.cache.php?page=" + pageId; if(update) url += "&update=true"; var error = function(){ GeleSocial.withShareStats.__stats = {}; callback(GeleSocial.withShareStats.__stats); }; var success = function (data) { if(data) callback(data); else error(); }; $.ajax({ url: url, dataType: 'json', success: success, error: error }); } } } GeleSocial.dependencies = {} GeleSocial.dependencies.loadDependecies = function(dependencies, barrier){ var completed = function(){ barrier.completed(); } if(dependencies && dependencies instanceof Array){ jQuery.each(dependencies, function(i, dep){ barrier.addCallback(); }); jQuery.each(dependencies, function(i, dep){ if(!dep) return true; var src = null; var existing = false; if(dep instanceof Array){ src = dep[0]; existing = dep[1](); } else { src = dep; } var script = $('script[src="' + src + '"]'); if(!existing && script.length == 0){ window.getCachedScript(src, completed); } else { completed(); } }); } } GeleSocial.dependencies.commonDependecies = function(barrier){ var loadUserData = GeleSocial.wordpress && window.wordpress && GeleSocial.wordpress.loadUserData(); var completed = function(){ barrier.completed(); } if(loadUserData){ barrier.addCallback(); GeleSocial.wordpress.withUserData(completed); } var commonDependencies = [['/social/common/js/json2.min.js', function(){return window.JSON;}] ,['/social/common/js/crypto-md5-2.5.3.js', function(){return window.Crypto && window.Crypto.MD5;}] ,'/social/common/js/url.js']; GeleSocial.dependencies.loadDependecies(commonDependencies, barrier); } GeleSocial.dependencies.siteDependecies = function(barrier){ GeleSocial.dependencies.loadDependecies(GeleSocial.settings.siteDependencies, barrier); } // deprecated GeleSocial.getLoginProviderPhoto = function(){ var user = GeleSocial.status.gigya.user; var socialThumb = null; if(user && user.thumbnailURL) socialThumb = user.thumbnailURL; return socialThumb; } GeleSocial.getUserThumb = function(){ var user = GeleSocial.status.gigya.user; var ret = null; if(user && user.thumbnailURL) ret = user.thumbnailURL; return ret; } GeleSocial.getUserPhoto = function(){ var user = GeleSocial.status.gigya.user; var ret = null; if(user && user.photoURL) ret = user.photoURL; return ret; } GeleSocial.getUserNick = function(){ var user = GeleSocial.status.gigya.user; var ret = null; if(user && user.nickname) ret = user.nickname; return ret; } GeleSocial.temporaryStatusAvailable = function(){ var me = this; var autologin = me.status.gigya.autologin && !me.status.gigya.autologinDone; if(autologin){ GeleSocial.startAutologin(undefined, "site");//me.status.gigya.user.loginProvider); } else { if(!me.status.logged) me.status.transitional = false; else GeleSocial.readSocialData(); } GeleSocial.notifyStatusChange(); } GeleSocial.getLoginStatus = function(force){ var me = this; var callback1 = null; var callback = function(response) { callback1 = null; try { if(window.console){ var response1 = null; if(response.user) response1 = response.user.UID; else response1 = response; window.console.log("getUserInfo response: " + response1); } if(response == "timeout"){ if(window.console) window.console.log("GeleSocial getUserInfo timeout"); } else if(response){ if(response.user != null && response.user.isLoggedIn && (!response.user.isConnected || !response.user.isSiteUID || GeleSocial.status.negativeCookie)){ GeleSocial.logOut(undefined, function(){ callback({user: {}}); }); return; } if(response.user && response.user.providers && response.user.identities && response.user.providers.length > 0){ var activeProviders = []; var expiredProviders = []; jQuery.each(response.user.providers, function(i, a){ var ident = response.user.identities[a]; if(ident && !ident.isExpiredSession) activeProviders.push(a); else expiredProviders.push(a); }); me.status.gigya.activeProviders = activeProviders; me.status.gigya.expiredProviders = expiredProviders; } if(response.user && response.user.identities && response.user.identities["site"]){ var thumbnailURL = response.user.identities["site"].thumbnailURL; var realProvider = null; jQuery.each(response.user.identities, function(k,v){ if(k!="site" && (v.thumbnailURL == thumbnailURL || v.photoURL == thumbnailURL)){ realProvider = k; } }); if(realProvider) me.status.gigya.realLoginProvider = realProvider; else if(thumbnailURL && thumbnailURL.indexOf("provider=site") < 0){ me.status.gigya.autologin = true; } } //me.status.gigya.logged = response.user != null && response.user.isLoggedIn && response.user.isConnected; //me.status.gigya.isSiteUID = response.user != null && response.user.isSiteUID; //me.status.gigya.isSiteLogged = me.status.gigya.logged && me.status.gigya.isSiteUID && response.user.loginProvider == "site"; //me.status.gigya.isOnlySiteProvider = me.status.gigya.isSiteLogged && me.status.gigya.activeProviders.length == 1 && me.status.gigya.activeProviders[0] == "site"; me.status.gigya.logged = response.user != null && response.user.isLoggedIn; me.status.gigya.isOnlySiteProvider = me.status.gigya.activeProviders.length == 1 && me.status.gigya.activeProviders[0] == "site"; me.status.gigya.user = response.user; } GeleSocial.checkStatus(); if(GeleSocial.wordpress && window.wordpress) GeleSocial.wordpress.checkStatus(); if(!me.status.gigya.autologinDone && !me.status.logged && me.status.gigya.logged && (!GeleSocial.settings.ignoreSocialLogged || !GeleSocial.settings.ignoreSocialLogged())){ me.status.gigya.autologin = true; } GeleSocial.temporaryStatusAvailable(); } catch(e){ if(window.console) window.console.log("errore: " + e); } }; var callback1 = callback; if(me.settings.ignoreLoginStatus){ callback1("timeout") } else { gigya.socialize.getUserInfo({}, { includeAllIdentities: true, callback: function(response){if(callback1) callback1(response);} }); } } /* FINE FACEBOOK Functions */ GeleSocial.ugcInit = function (){ var me = this; GeleSocial.checkStatus(); GeleSocial.temporaryStatusAvailable(); } GeleSocial.willGigyaAutologin = function (callback){ var autologin = GeleSocial.settings.gigya.conf.autoLogin; //if(!autologin && !($.browser.msie && parseInt($.browser.version) <= 8)) callback(false); var facebookLoaded = function(){ facebookLoaded = function(){}; if(!autologin || !window.FB) callback(false); else { var gigyaStatus = function(response){ if(response.user && response.user.isLoggedIn){ callback(false); } else { callback(true); } } var facebookStatus = function(response){ var connected = response.status == "connected"; if(!connected) callback(false); else { gigya.socialize.getUserInfo({ callback: gigyaStatus }); } } FB.getLoginStatus(facebookStatus); } } gigya.socialize.waitForService({}, {service: "facebook",callback: facebookLoaded}); setTimeout(facebookLoaded, 10000); } GeleSocial.addCookieListener = function(listener){ if(!this._cookieListeners) this._cookieListeners = []; this._cookieListeners.push(listener); } GeleSocial.startAutologin = function(bckUrl1, provider, params){ var baseUrl = this.settings.baseUrlSocial + "loader.php"; var bckUrl = baseUrl+"?mClose=4"; if(params) bckUrl += "&" + $.param(params); if(bckUrl1) bckUrl += "&backUrl=" + escape(bckUrl1); bckUrl = GeleSocial.loginUrl(bckUrl); var error = function(){GeleSocial.autoLogin(bckUrl1);} var startA = function(provider){ var url4redirect = baseUrl+"?mClose=6&autologin=true"; if(provider) url4redirect += "&provider=" + provider; url4redirect += "&backUrl=" + escape(bckUrl); $("body").append(""); if(!bckUrl1) setTimeout(error, GeleSocial.settings.gigya.timeout); } startA(provider); } GeleSocial.autoLogin = function(backurl, modal){ var callback = function(){ if(backurl){ if(!modal){ window.location.href = backurl; } else { GeleSocial.openModal(backurl); } return; } var me = window.GeleSocial; if(me.status.gigya.autologinDone) return; me.status.gigya.autologinDone = true; GeleSocial.getLoginStatus(true); } if(GeleSocial.wordpress) GeleSocial.wordpress.withUserData(callback); else callback(); } GeleSocial.readSocialData = function(){ var me = this; var myCallback = function(){ me.status.transitional = false; GeleSocial.notifyStatusChange(); $("body").addClass("logged"); } GeleSocial.withSocialData(myCallback); } GeleSocial.checkIgnoreLogged = function(){ var me = this; if(me.settings.ignoreLogged || me.status.ignoreLogged){ me.status.logged = false; me.status.gigya.preventAutologin = true; } } GeleSocial.deleteUser = function(){ var me = this; me.status.logged = false; me.status.user = null; if(me.settings.kw_cookie && me.settings.kw_navid_cookie){ GeleSocial.deleteCookie(me.settings.kw_cookie, null, RenderSocial.COOKIE_DOMAIN, "/"); GeleSocial.deleteCookie(me.settings.kw_navid_cookie, null, RenderSocial.COOKIE_DOMAIN, "/"); } } GeleSocial.checkStatus = function() { var me = this; //read user information var user = me.getUser(); if(user){ me.status.logged = true; me.status.user = user; } if(!me.status.gigya.logged && me.status.logged){ GeleSocial.deleteUser(); } if(GeleSocial.ws.settings.CHECK_REDIS && !GeleSocial.utils.isNull(me.status.user)){ var errorCode = GeleSocial.checkRedisError(); if(errorCode){ if(errorCode == 600){ me.status.redisError = true; } else if(errorCode == 400){ GeleSocial.deleteUser(); } else { me.status.ignoreLogged = true; } } } GeleSocial.checkIgnoreLogged(); /*Test on negative cookie. Prevent all the other controls*/ var negCookieValue = GeleSocial.getCookie(this.settings.kw_neg_cookie); if(!GeleSocial.utils.isNull(negCookieValue)){ if(!me.status.logged){ //me.status.gigya.preventAutologin = true; } else { GeleSocial.deleteCookie(this.settings.kw_neg_cookie, null, null, "/"); } } if(me.status.gigya.user && me.status.gigya.user.UID && me.status.user && me.status.user["memkey"] && me.status.user["user"]){ var user = me.status.user["user"]; var memkey = me.status.user["memkey"]; var user1 = Crypto.MD5(memkey + me.status.gigya.user.UID); if(user1 == user){ me.status.gigya.sameUser = true; } } me.status.loaded = true; } GeleSocial.loginUrl = function(backurl){ if(!backurl) backurl = window.locationHrefWithoutHash(); if(GeleSocial.wordpress && window.wordpress) backurl = GeleSocial.wordpress.loginBackurl(backurl); return backurl; } GeleSocial.logOutUrl = function(backurl) { if(!backurl) backurl = window.locationHrefWithoutHash(); if(GeleSocial.wordpress && window.wordpress) backurl = GeleSocial.wordpress.logoutBackurl(backurl); return backurl; } GeleSocial.logOut = function(backurl, callback) { var me = this; if(!callback) callback = function(){ backurl = GeleSocial.logOutUrl(backurl); var parameters = {}; parameters['bckurl'] = backurl; GeleSocial.ws.logout(parameters); } gigya.socialize.logout({ forceProvidersLogout: false ,callback: callback }); } GeleSocial.getUser = function() { //read the social cookie var cookieValue = GeleSocial.getCookie(this.settings.kw_cookie); if(!GeleSocial.utils.isNull(cookieValue)){ try { return JSON.parse(cookieValue); } catch(e){return null;} }else{ return null; } } GeleSocial.isLogged = function(){ var me = this; return me.status.logged; } GeleSocial.isLoggedSocial = function(){ var me = this; return me.status.gigya.logged && me.status.gigya.sameUser; } GeleSocial.checkRedisError = function(){ var res = GeleSocial.getPageCookies() if(res["error_code"]){ return res["error_code"]; } else { return false; } } GeleSocial.canReadBoxData = function() { return GeleSocial.isLogged(); } GeleSocial.getCookie = function(pageKey) { var cookieValue = $.cookie(pageKey); return cookieValue; } GeleSocial.setCookie = function(pageKey, value, days, domain, path) { try{ var params = {}; if (!GeleSocial.utils.isNull(days) && (typeof days==="number")) $.extend(params, {expires: days}); if (!GeleSocial.utils.isNull(domain)) $.extend(params, {domain: domain}); if (!GeleSocial.utils.isNull(path)) $.extend(params, {path: path}); return $.cookie(pageKey, value, params); }catch(e){ if(window.console) window.console.log("ATTENZIONE! COOKIE NON SALVATO!"); } } GeleSocial.deleteCookie = function(name, expires, domain, path){ $.cookie(name, "", { expires: -1, domain: domain, path: path}); } GeleSocial.getPageCookies = function(force) { force = (!GeleSocial.utils.isNull(force)) ? force : false; if(!force && this._pageCookies) return this._pageCookies; else { var ret = {}; if(this.canReadBoxData()) { var parameters = {}; parameters['page'] = this.settings.pageId; var response = GeleSocial.ws.redis(parameters); if(!GeleSocial.utils.isNull(response) && !GeleSocial.utils.isNull(response['boxes'])) { ret = response['boxes']; } this._pageCookies = ret; } return ret; } } GeleSocial.deleteBoxCookie = function(box) { var boxKey = GeleSocial.ws.getBoxKey(box); if(boxKey!=null) { if(this.canReadBoxData()) { var parameters = {}; parameters['page'] = this.settings.pageId; parameters['delete'] = 1; parameters['box'] = boxKey; delete this.getPageCookies()[boxKey]; return GeleSocial.ws.redisPost(parameters); } else { return $.cookie(boxKey); } if(this._cookieListeners){ jQuery.each(this._cookieListeners, function(i, a){ if(a && a.onCookieDeleted) a.onCookieDeleted(boxKey); }); } } } GeleSocial.deletePageCookies = function() { if(this.canReadBoxData()) { var parameters = {}; parameters['page'] = this.settings.pageId; parameters['delete'] = 1; var _this = this; var pageCookies = jQuery.extend({}, GeleSocial.getPageCookies()); delete this._pageCookies; var ret = GeleSocial.ws.redisPost(parameters); jQuery.each(pageCookies, function(k, v){ if(_this._cookieListeners){ jQuery.each(_this._cookieListeners, function(i, a){ if(a && a.onCookieDeleted) a.onCookieDeleted(k); }); } }); return ret; } else { return $.cookie(boxKey); } } GeleSocial.getBoxCookie = function(box, force) { force = (!GeleSocial.utils.isNull(force)) ? force : false; var boxKey = GeleSocial.ws.getBoxKey(box); var ret = this.getPageCookies(force)[boxKey]; if(ret === undefined) ret = {}; return ret; } GeleSocial.setBoxCookie = function(box, values) { var boxKey = GeleSocial.ws.getBoxKey(box); if(boxKey!=null) { if(window.console) window.console.log(this.canReadBoxData()); if(this.canReadBoxData()==true) { if(window.console) window.console.log("setBoxCookie - canReadBoxData=true"); if(!GeleSocial.utils.isNull(values)) { var parameters = {}; parameters['page'] = this.settings.pageId; parameters['box'] = boxKey; this.getPageCookies()[boxKey] = values; GeleSocial.ws.redisPost(parameters, values); } else { this.deleteBoxCookie(boxKey); } } else { if(window.console) window.console.log("setBoxCookie - canReadBoxData=false"); if(window.console) window.console.log("setBoxCookie - boxKey="+boxKey); var cookieValue = $.cookie(boxKey); if(window.console) window.console.log("setBoxCookie - cookieValue="+cookieValue); if(window.console) window.console.log("setBoxCookie - values="); if(window.console) window.console.log(values); if(!GeleSocial.utils.isNull(cookieValue)) { if(window.console) window.console.log("setBoxCookie - leggo da redis"); var cookieValueMap = GeleSocial.ws.getParameterPost(cookieValue); cookieValueMap = $.extend(cookieValueMap, values); var cookieValuesString = GeleSocial.ws.buildParametersPost(cookieValueMap); $.cookie(boxKey, cookieValuesString); this.getPageCookies()[boxKey] = values; } else { if(window.console) window.console.log("setBoxCookie - non leggo da redis"); var cookieValuesString = GeleSocial.ws.buildParametersPost(values); $.cookie(boxKey, cookieValuesString); this.getPageCookies()[boxKey] = values; } } if(this._cookieListeners){ jQuery.each(this._cookieListeners, function(i, a){ if(a && a.onCookieSet) a.onCookieSet(boxKey, values); }); } } } /* ------------------------------------------------------------------------ Render functions - Provide html render of social boxes in the pages ------------------------------------------------------------------------- */ GeleSocial.render = function(parameters, f) { if(!GeleSocial.utils.isNull(f) && !GeleSocial.utils.isNull(parameters) && $.isFunction(f)) f(parameters); } /* FACEBOOK SOCIAL PLUGIN FBML */ GeleSocial.render.FB_ACTIVITYFEED_PLUGIN = "fb:activity"; GeleSocial.render.FB_LIKE_PLUGIN = "fb:like"; GeleSocial.render.FB_SEND_PLUGIN = "fb:send"; GeleSocial.render.FB_LIKE_BOX_PLUGIN = "fb:like-box"; GeleSocial.render.FB_LOGIN_PLUGIN = "fb:login-button"; GeleSocial.render.FB_RECOMMENDATION_PLUGIN= "fb:recommendations"; GeleSocial.render.FB_FACEPILE_PLUGIN= "fb:facepile"; GeleSocial.render.FB_COMMENTS_PLUGIN= "fb:comments"; GeleSocial.render.pluginString = function(type, parameters, content) { var parametersString = this._buildSocialPluginParameters(parameters); if(GeleSocial.utils.isNull(content)) content=''; return '<'+type+' '+parametersString+'>'+content+''; } GeleSocial.render.plugin = function(type, id, parameters, content, logged) { if(!GeleSocial.utils.isNull(id) && $(id).length != 0) { $(id).hide(); var pluginString = this.pluginString(type, parameters, content); $(id).html(pluginString); if(!GeleSocial.utils.isNull(logged) && !logged) { $(id).addClass("fb-plugin"); $(id).show(); } else { $(id).addClass("fb-plugin-logged"); } } } GeleSocial.render.activityFeedString = function(parameters, content) { return this.pluginString(this.FB_ACTIVITYFEED_PLUGIN, parameters,content); } GeleSocial.render.loginString = function( parameters, content) { return this.pluginString(this.FB_LOGIN_PLUGIN, parameters, content); } GeleSocial.render.sendButtonString = function(parameters) { return this.pluginString(this.FB_SEND_PLUGIN, parameters,''); } GeleSocial.render.likeButtonString = function(parameters) { return this.pluginString(this.FB_LIKE_PLUGIN, parameters,''); } GeleSocial.render.likeBoxString = function(parameters) { return this.pluginString(this.FB_LIKE_BOX_PLUGIN, parameters,''); } GeleSocial.render.recommendationsString = function(parameters) { return this.pluginString(this.FB_RECOMMENDATION_PLUGIN, parameters,''); } GeleSocial.render.facePileString = function(parameters) { return this.pluginString(this.FB_FACEPILE_PLUGIN, parameters,''); } GeleSocial.render.activityFeed = function(id, parameters, logged) { GeleSocial.render.plugin(this.FB_ACTIVITYFEED_PLUGIN, id, parameters, '', logged); } GeleSocial.render.recommendations = function(id, parameters, logged) { return this.plugin(this.FB_RECOMMENDATION_PLUGIN, id, parameters,'', logged); } GeleSocial.render.likeButton = function(id, parameters, logged) { GeleSocial.render.plugin(this.FB_LIKE_PLUGIN, id, parameters, '', logged); } GeleSocial.render.loginButton = function(id, parameters, content, logged) { GeleSocial.render.plugin(this.FB_LOGIN_PLUGIN, id, parameters, content, logged); } GeleSocial.render.facePile = function(id, parameters, logged) { GeleSocial.render.plugin(this.FB_FACEPILE_PLUGIN, id, parameters, '', logged); } GeleSocial.render.comments = function(id, parameters, logged) { GeleSocial.render.plugin(this.FB_COMMENTS_PLUGIN, id, parameters, '', logged); } GeleSocial.render._buildSocialPluginParameters = function(parameters) { parametersString = ""; if (!GeleSocial.utils.isNull(parameters)) { $.each(parameters, function(key, value) { parametersString += key+'="'+value+'" '; }); } return parametersString; } /* ------------------------------------------------------------------------ WS functions - Provide dialog with social ws ------------------------------------------------------------------------- */ GeleSocial.ws = {} GeleSocial.ws.settings = { BASE_URL : "", REDIS : "redis.php", LOGOUT: "logout.php", KEY_VAL_SEPARATOR: "|||", PARAMETERS_SEPARATOR: "@@@" }; GeleSocial.ws.TYPE_JSON = "json" GeleSocial.ws.init = function(settings) { if(!GeleSocial.utils.isNull(settings)) { this.settings = $.extend(this.settings, settings); } } GeleSocial.ws.buildParametersPost = function(values) { var me = this; var string = ""; var oLength = GeleSocial.utils.getObjectLength(values); if(typeof values!='undefined' && values!=null) { var index = 0; $.each(values, function(key, value) { if(value==null) value="null"; string+=key+me.settings.KEY_VAL_SEPARATOR+value; if(index<(oLength-1)) string+=me.settings.PARAMETERS_SEPARATOR; index++; }); } return string; } GeleSocial.ws.getParameterPost = function(string) { var me = this; var map = {}; if(!GeleSocial.utils.isEmptyString(string)) { if(window.console) window.console.log(string); if(window.console) window.console.log(me.settings.PARAMETERS_SEPARATOR); var parameters = string.split(me.settings.PARAMETERS_SEPARATOR); $.each(parameters, function(index) { var keyVal = parameters[index].split(me.settings.KEY_VAL_SEPARATOR); if(!GeleSocial.utils.isNull(keyVal) && keyVal.length==2) { var key = keyVal[0]; var value = keyVal[1]; map[key] = value; } }); } return map; } GeleSocial.ws.getBoxKey = function(boxName) { if(!GeleSocial.utils.isEmptyString(boxName)) { var key = boxName.toLowerCase(); key = key.replace(" ", "_"); key = key.replace("__", "_"); return key; } return null; } GeleSocial.ws.jsonpCall = function(service, f, params) { if(!GeleSocial.utils.isNull(f) && !GeleSocial.utils.isNull(params) && !GeleSocial.utils.isNull(params)) { var parameters = {}; if(!GeleSocial.utils.isNull(params)) { parameters = $.extend(parameters, params); } $.getJSON(this.settings.BASE_URL + service + "?jsoncallback=?", parameters, function(data) { f(data); } ); } } GeleSocial.ws.comments = {}; GeleSocial.ws.comments.renderTopCommentedBox = function(selector, wsParams) { if ($(selector).length == 0) { return; } var wsUrl = GeleSocial.settings.baseUrlSocial + "boxes/comments/top-commented.cache.php"; if (wsParams === undefined) { wsParams = {}; } $.ajax({ url: wsUrl, data: wsParams, dataType: "html", success: function(response) { $(selector).empty().append(response); } }); } GeleSocial.ugc = {}; GeleSocial.ugc.renderForm = function(params){ var document = document; if(params.containerDocument) document = params.containerDocument; var containerID = params.containerID; if(!containerID) return; var container = $("#" + containerID, document); if(container.length == 0) return; var logged = GeleSocial.isLogged(); if(!logged && params.ugcParams.commentiSSO !== false){ if(params.notlogged) params.notlogged(container); return; } var renderForm1 = function(){ var ugcParams = params.ugcParams; var commentUrl = GeleSocial.settings.baseUrlSocial + "comment.php"; var data = {tipo: "commento"}; if(params.tipo) data.tipo = params.tipo; var obbligatoriOgg = {"commento": ["commento"], "upload": ["titolo", "commento", "immagine"]}; if(params.obbligatori) jQuery.extend(obbligatoriOgg, params.obbligatori); if(data.tipo && obbligatoriOgg[data.tipo]){ obbligatori = obbligatoriOgg[data.tipo]; } else { obbligatori = obbligatoriOgg["commento"]; } data.idarticolo = ugcParams.idarticolo; data.brand = ugcParams.brand; if(ugcParams.title) data.threadtitolo = ugcParams.title; if(ugcParams.desc) data.threaddesc = ugcParams.desc; if(ugcParams.origin) data.threadarturl = ugcParams.origin; if(ugcParams.commentiSSO === false && ugcParams.nickname) data.nickname = ugcParams.nickname; if(!data.idarticolo || !data.brand) return; if(params.logged){ params.logged(container); } var form = container.find("form"); var title = form.find('*[name="titolo"]').last(); var immagine = form.find('*[name="immagine"]').last(); var comment = form.find('*[name="commento"]').last(); var tag = form.find('*[name="tag"]').last(); var fields = {"titolo": title, "commento": comment, "immagine": immagine, "tag": tag}; var submit = form.find('input[type="submit"]'); form.find('*[name="submit"]').attr("name", "submit2"); var boxContaCaratteri = null; var updateText = null; var contaCaratteri = function(maxChars) { if(!params.contaCaratteri.containerID) return; boxContaCaratteri = container.find("#" + params.contaCaratteri.containerID); updateText = function() { var text = comment.val(); var len= text.length; var diff = maxChars-len; if(diff>=0) { boxContaCaratteri.html('Caratteri disponibili: '+diff+''); } else { boxContaCaratteri.html("Attenzione! Hai superato il limite di "+maxChars+"  caratteri"); } if(len>maxChars) comment.val(text.substring(0, maxChars)); }; updateText(); comment.keyup(updateText); } if(comment.length >0 && params.contaCaratteri){ $.ajax({ type: 'GET', url: commentUrl, data: {"idarticolo": data.idarticolo, "brand": data.brand}, dataType: "json", success: function(data) { if(data.lunghezzatesto){ contaCaratteri(data.lunghezzatesto); } } }); } if(window.gsPlugins && params.socialShare) window.gsPlugins.comments.enrichForm(form, params.socialShare); var clear = function(inputs){ $.each(inputs, function(i, input){ try { $(input).val(""); $(input).removeAttr("disabled"); } catch(e){} }); if(boxContaCaratteri){ boxContaCaratteri.html(''); updateText(); } } var clearErrors = function(inputs){ $.each(inputs, function(i, input){ try { $(input).removeClass("gs-error"); $(input).removeAttr("data-error"); } catch(e){} }); form.find(".gs-error-label").remove(); } var success1 = function(){GeleSocial.openCommentSent();} var error1 = function(){GeleSocial.openMessageModal(undefined, 800, 300);} var loading = function(){GeleSocial.openSendingComment();} var messageBox = container.find(".gs-message-box"); if(messageBox.length > 0) { messageBox = new GeleSocial.MessageBox(messageBox); success1 = function(){ messageBox.setLoading(false); messageBox.setError(false); messageBox.setVisible(true); messageBox.setMessage("Contributo pubblicato correttamente") setTimeout(function(){messageBox.setVisible(false);}, 2000); } error1 = function(data){ messageBox.setLoading(false); messageBox.setError(true); messageBox.setVisible(true); var message = "Siamo spiacenti, si è verificato un errore"; if(data && data['error_code'] == "error_posting_message"){ message = "Errore nella pubblicazione"; if(data['error_msg'] != "error_posting_message") message = data['error_msg']; } else if(data && data['error_code'] == "error_validating"){ message = data['error_msg']; } messageBox.setMessage(message); setTimeout(function(){messageBox.setVisible(false);}, 2000); } loading = function(){ messageBox.setLoading(true); messageBox.setVisible(true); messageBox.setMessage("Invio in corso..."); } } var success = function() { submit.removeAttr('disabled'); success1(); clear(fields); } var error = function(data) { submit.removeAttr('disabled'); error1(data); if(window.console) window.console.error("errore post commento:"); if(window.console) window.console.error("data="+data); } var validate = function(fields, data1){ var error = false; if(obbligatori){ $.each(obbligatori, function(i, fname){ var value = null; var field = fields[fname]; if(data1[fname]) value = data1[fname]; else if(field) value = field.val(); if(value) value = $.trim(value); if(value.length == 0){ error = true; if(field){ field.attr("data-error", "Campo obbligatorio"); field.addClass("gs-error"); } } }); } return error; } var checkPrepend = function(fields, prepend, data){ if(!prepend) return; jQuery.each(fields, function(fname, field){ if(prepend[fname]){ var value = $.trim(field.val()); var value1 = prepend[fname]; if(value.length > 0){ value1 += " " + value; } data[fname] = value1; field.attr("disabled", "disabled"); } }); } var onsubmit = function(ev){ var data1 = jQuery.extend({}, data); clearErrors(fields); checkPrepend(fields, params.prepend, data1); var validateError = validate(fields, data1); if(validateError){ if(params.validationError) params.validationError(form); submit.removeAttr('disabled'); return false; } loading(); GeleSocial.utils.noCSRF(data1); var submitParams = { type: 'POST', url: commentUrl, data: data1, dataType: "json", //iframe: true, success: function(data) { if(data && data.error === false) { if(window.console) window.console.log("Risultato post commento:"); if(window.console) window.console.log(data); success(); } else { error(data); } }, error: error }; //if(params.iframeTarget) submitParams.iframeTarget = params.iframeTarget; jQuery(form).ajaxSubmit(submitParams); return false; } form.submit(onsubmit); } var formDependencies = [['/social/common/js/jquery.plugin/jquery.form.js', function(){return $.fn.ajaxForm;}]]; var barrier = new GeleSocial.Barrier(); GeleSocial.dependencies.loadDependecies(formDependencies, barrier); barrier.wait(renderForm1); } GeleSocial.ws.logout = function(parameters) { if(parameters && parameters['bckurl']) { var backUrl = parameters['bckurl']; document.location.href = this.settings.BASE_URL + this.settings.LOGOUT + "?bckurl=" + escape(backUrl); } } GeleSocial.ws.redis = function(parameters) { var dataRet = null; if(!GeleSocial.utils.isNull(parameters)) { $.ajax({ url: this.settings.BASE_URL + this.settings.REDIS, async: false, data: parameters, dataType: 'json', success: function (data) { if(GeleSocial.ws.isJsonError(data)) { if(data["error_code"]==200){ dataRet = {"boxes": {}} } else { if(window.console) window.console.log(data['error_msg']); dataRet = data; } } else { if(window.console) window.console.log(data); dataRet = data; } } }); } return dataRet; } GeleSocial.ws.redisPost = function(parameters, values) { var dataRet = false; if(!GeleSocial.utils.isNull(values) && GeleSocial.utils.getObjectLength(values)>0) { valuesString = this.buildParametersPost(values); parameters['params'] = valuesString; } if(!GeleSocial.utils.isNull(parameters)) { if(!GeleSocial.utils.isNull(GeleSocial.settings.kw_cookie) && !GeleSocial.utils.isNull($.cookie(GeleSocial.settings.kw_cookie)) ){ // richiesto per la protezione anti CSRF GeleSocial.utils.noCSRF(parameters); $.post(this.settings.BASE_URL + this.settings.REDIS, parameters, function(data) { dataRet = GeleSocial.ws.isJsonError(data); } ); } } return dataRet; } GeleSocial.ws.isJsonError = function(json) { if(!GeleSocial.utils.isNull(json) && json['error']=="true") { return true; } else if(GeleSocial.utils.isNull(json)) { return true; } return false; } GeleSocial.getOrigin = function() { var protocol = "http://"; var string = protocol; var url = location.href; var indexProtocol = url.indexOf(protocol); if(indexProtocol!=-1) { var protocolLength = protocol.length; var cleanUrl = url.substring(indexProtocol+protocolLength, url.length); var d = cleanUrl.split("/",2); i = 0; $.each(d, function(index) { string += d[index]; if(i0) { return this.seconds<=this.options.finalValue; } else { return this.seconds>=this.options.finalValue; } } this.countdown = function() { this.seconds = this.seconds+this.options.step; if (this.isLastItem()){ $(this.options.timeId).html(this.seconds); setTimeout(function(thisObj) {thisObj.countdown();}, this.options.time, this); } else { $(this.options.messageId).html(this.options.messageRedirect); setTimeout("location.href=\""+this.url+"\"",this.options.finalTime); } } }