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