/* ------------------------------------------------------------------------ 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 ------------------------------------------------------------------------- */ /** * TODO * */ (function($) { $.bookmark = function(){version: '0.1'}; $.bookmark.BUTTON_ID_ADD = 'bookmark-add'; $.bookmark.BUTTON_ID_DELETE = 'bookmark-delete'; $.bookmark.BUTTON_CONTAINER_ID = 'bookmark-container'; $.bookmark.BUTTON_LABEL_ADD = 'Lo leggo dopo'; $.bookmark.BUTTON_LABEL_DELETE = 'Cancella dai preferiti'; $.bookmark.BUTTON_ADD_TEMPLATE = ''+$.bookmark.BUTTON_LABEL_ADD+'' $.bookmark.BUTTON_DELETE_TEMPLATE = ''+$.bookmark.BUTTON_LABEL_DELETE+'' $.bookmark.ARTICLES_MAX_LIMIT = 30; $.bookmark.COOKIE_NAME = 'bookmark-elements'; $.bookmark.SUMMARY_MAX_LENGHT = 140; $.bookmark.FILED_OG_TITLE = 'og:title'; $.bookmark.FILED_OG_URL = 'og:url'; $.bookmark.FILED_OG_IMAGE = 'og:image'; $.bookmark.FILED_OG_DESCRIPTION = 'og:description'; $.bookmark.FILED_PUB_DATE = 'datait'; $.bookmark.FILED_AUTHOR = 'firma'; $.bookmark.FILED_AUTHOR_DEFAULT = ''; $.bookmark.FILED_TIMESTAMP = 'timestamp'; $.bookmark.ACTION_MSG_ADD_NEW = 'L\'articolo e\' stato aggiunto con successo'; $.bookmark.ACTION_MSG_ADD_ERROR = 'Si e\' verificato un errore nel salvataggio dell\'articolo'; $.bookmark.ACTION_MSG_LIMIT_MAX = 'Hai raggiunto il limite massimo di articoli salvati. Prima di aggiungere un nuovo articolo e\' necessario cancellarne qualcuno dal tuo archivio'; $.bookmark.ACTION_MSG_ALREADY_EXIST = 'L\'articolo e\' gia\' presente nel tuo archivio'; $.bookmark.ACTION_MSG_DELETE = 'L\'articolo e\' stato cancellato con successo'; $.bookmark.ACTION_MSG_DELETE_ERROR = 'Si e\' verificato un errore nella cancellazione dell\'articolo'; $.bookmark.ACTION_MSG_ALREADY_DELETE = 'L\'articolo e\' gia\' stato cancellato dal tuo archivio'; $.bookmark.ACTION_MSG_CONFIRM_DELETE = "Sei sicuro di voler cancellare l'articolo?"; $.bookmark.CUSTOM_PAGE_UL_ID = 'box_archive'; $.bookmark.CUSTOM_PAGE_UL_CLASS = 'box archive'; $.bookmark.CUSTOM_PAGE_HTML_CONTAINER = '
'; $.bookmark.CUSTOM_PAGE_MAX_ITEMS = 5; $.bookmark.CUSTOM_PAGE_PATTERN_PRINT = 'print-'; $.bookmark.CUSTOM_PAGE_CLASS_PRINT = 'print'; $.bookmark.CUSTOM_PAGE_PATTERN_DELETE = 'delete-'; $.bookmark.CUSTOM_PAGE_CLASS_DELETE = 'delete'; $.bookmark.CUSTOM_PAGE_POPUP_ID = 'bookmark-popup'; $.bookmark.CUSTOM_PAGE_POPUP_CLOSE_ID = 'bookmark-popup-close'; $.bookmark.CUSTOM_PAGE_POPUP_CLOSE_CLASS= 'chiudi'; $.bookmark.CUSTOM_PAGE_POPUP_WIDTH = 800; $.bookmark.CUSTOM_PAGE_POPUP_HEIGHT = 700; $.bookmark.CUSTOM_PAGE_POPUP_URL = RenderSocial.BASEURL_SOCIAL+"print.php?u="; $.bookmark.CUSTOM_PAGE_ARTICLES_LIST_ID = 'bookmark-list'; $.bookmark.STATUS_BAR_ARTICLES_LIST_MAX = 3; $.bookmark.STATUS_BAR_EMPTY_ARTICLES = "Qui troverai la lista degli ultimi articoli che hai deciso di salvare"; $.bookmark.ARTICLE_CONTENT_WS_URL = "content.json"; $.bookmark.SHARE_CONTAINER_CLASS = 'content-share'; $.bookmark.SHARE_OVERLAY_EFFECT_TIME = 1000; $.bookmark.SHARE_OVERLAY_CLASS = 'gs-share-bookmark-container'; $.bookmark.TABLE_SORTER_ID = 'myTable'; $.bookmark.TABLE_SORTER_WIDGET = 'zebra'; $.bookmark.MONTHS = new Array('gennaio','febbraio','marzo','aprile','maggio','giugno', 'luglio','agosto','settembre','ottobre','novembre','dicembre'); $(function(){ if($.tablesorter){ $.tablesorter.addParser({ id: 'gs_date', is: function(s) { // return false so this parser is not auto detected return false; }, format: function(s) { var ret = "1970-01-01"; s = s.toLowerCase(); s = s.split(" "); if(s.length < 3) return ret; var month = $.bookmark.MONTHS.indexOf(s[1]) + 1; if(month>0){ if(month<10) month = "0" + month; ret = s[2] + "-" + month + "-" + s[0]; } return ret; }, type: 'text' }); } }); /* * DEFAULT SETTINGS * */ var settings = { debug : true //consol log debug }; $.fn.bookmark = function() { $.bookmark.log("init"); var node = $(this); var url = $("meta[property=\""+$.bookmark.FILED_OG_URL+"\"]").attr("content"); var articles = $.bookmark.cookie.getBoxCookie(); if(!$.bookmark.utils.isNull(url) && !$.bookmark.utils.isNull(articles)){ //check if article is already present on bookmark! if($.bookmark.articlesAlreadyExists(articles, url)){ $.bookmark.log("articolo presente"); $.bookmark.setLabelDelete(url); }else{ $.bookmark.log("articolo nuovo"); $.bookmark.setLabelAdd(); } } } /* * Check if an article is already present in user's bookmark via * */ $.bookmark.articlesAlreadyExists = function(articles,url) { var ret = false; if(!$.bookmark.utils.isNull(articles) && !$.bookmark.utils.isObjectNull(articles.values)){ $.each(articles.values,function(i,e){ if(!ret && e[$.bookmark.FILED_OG_URL]==url) ret = true; }); } return ret; } $.bookmark.setLabelDelete = function(url) { $("#"+$.bookmark.BUTTON_CONTAINER_ID).html($.bookmark.BUTTON_DELETE_TEMPLATE); $("#"+$.bookmark.BUTTON_CONTAINER_ID).addClass("cancel"); $("#"+$.bookmark.BUTTON_ID_DELETE).click(function(){ $.bookmark.deleteItem(url); }); } $.bookmark.setLabelAdd = function(click) { $("#"+$.bookmark.BUTTON_CONTAINER_ID).html($.bookmark.BUTTON_ADD_TEMPLATE); $("#"+$.bookmark.BUTTON_CONTAINER_ID).removeClass("cancel"); if(click===undefined){ click = function(){ $.bookmark.addItem(); } } $("#"+$.bookmark.BUTTON_ID_ADD).click(click); } /* * Add an article into user's bookmark via * */ $.bookmark.addItem = function() { $.bookmark.log("add function"); try{ var articles = $.bookmark.cookie.getBoxCookie(true); var tot = (!$.bookmark.utils.isNull(articles) && !$.bookmark.utils.isObjectNull(articles.values)) ? articles.values.length : 0; if(tot < $.bookmark.ARTICLES_MAX_LIMIT){ $.bookmark.log("tot articoli salvati:"+tot); var title = $("meta[property=\""+$.bookmark.FILED_OG_TITLE+"\"]").attr("content"); var url = $("meta[property=\""+$.bookmark.FILED_OG_URL+"\"]").attr("content"); var image = $("meta[property=\""+$.bookmark.FILED_OG_IMAGE+"\"]").attr("content"); var desc = $("meta[property=\""+$.bookmark.FILED_OG_DESCRIPTION+"\"]").attr("content"); var date = $("meta[name=\""+$.bookmark.FILED_PUB_DATE+"\"]").attr("content"); var author = $("meta[name=\""+$.bookmark.FILED_AUTHOR+"\"]").attr("content"); var ts = $.bookmark.utils.timestamp(); title = title.replace(' - Repubblica.it', ''); author = (!$.bookmark.utils.isEmptyString(author)) ? author.replace("di ","") : $.bookmark.FILED_AUTHOR_DEFAULT; author = $.bookmark.utils.ucwords(author.toLowerCase()); $.bookmark.log("articolo url:"+url); //if user open two browser's tab if(!$.bookmark.articlesAlreadyExists(articles, url)){ $.bookmark.log("articolo da salvare non presente"); var article = {}; article[$.bookmark.FILED_OG_TITLE] = title; article[$.bookmark.FILED_OG_URL] = url; article[$.bookmark.FILED_OG_IMAGE] = image; article[$.bookmark.FILED_OG_DESCRIPTION] = desc; article[$.bookmark.FILED_AUTHOR] = author; article[$.bookmark.FILED_PUB_DATE] = date; article[$.bookmark.FILED_TIMESTAMP] = ts; articles.values.push(article); //va testato e valutare l'ipostesi di mettere un throw dentro la setcookie $.bookmark.cookie.setBoxCookie(articles); //$.bookmark.alerting($.bookmark.ACTION_MSG_ADD_NEW); }else{ //$.bookmark.alerting($.bookmark.ACTION_MSG_ALREADY_EXIST); } $.bookmark.setLabelDelete(url); }else{ $.bookmark.alerting($.bookmark.ACTION_MSG_LIMIT_MAX); } }catch(e){ $.bookmark.alerting($.bookmark.ACTION_MSG_ADD_ERROR); } } /* * Remove an article from user's bookmark via * */ $.bookmark.deleteItem = function(url) { $.bookmark.log("delete function"); try{ var articles = $.bookmark.cookie.getBoxCookie(true); if($.bookmark.articlesAlreadyExists(articles, url)){ var articlesMerged = new Array(); $.each(articles.values,function(i,e){ if(e[$.bookmark.FILED_OG_URL]!=url) articlesMerged.push(e); }); $.bookmark.log("merged"); $.bookmark.debug(articlesMerged); $.bookmark.debug(articlesMerged); var ret = {"values":articlesMerged}; $.bookmark.cookie.setBoxCookie(ret); //$.bookmark.alerting($.bookmark.ACTION_MSG_DELETE); }else{ //$.bookmark.alerting($.bookmark.ACTION_MSG_ALREADY_DELETE); } $.bookmark.setLabelAdd(); }catch(e){ $.bookmark.alerting($.bookmark.ACTION_MSG_DELETE_ERROR); } } /*---------------------- Class Toolbar -------------------------------------------*/ $.bookmark.statusbar = {}; $.bookmark.statusbar.getListArticles = function() { var articles = $.bookmark.cookie.getBoxCookie(true); var length = articles.values.length; var htmlBox = "

Lo leggo dopo

"; if(length > 0){ htmlBox += ""; }else htmlBox += $.bookmark.STATUS_BAR_EMPTY_ARTICLES; return htmlBox; } /*---------------------- Class Custom Page -------------------------------------------*/ $.bookmark.custompage = {}; $.bookmark.custompage.renderBoxArticles = function(limit) { $.bookmark.log("custompage render funcion"); $("#"+RenderSocial.CUSTOM_CENTER_DIV_ID).append($.bookmark.CUSTOM_PAGE_HTML_CONTAINER); $.bookmark.custompage.renderListArticles(); } $.bookmark.custompage.renderBoxListArticles = function(limit) { $.bookmark.log("custompage render funcion"); $("#"+RenderSocial.CUSTOM_CENTER_DIV_ID).html($.bookmark.CUSTOM_PAGE_HTML_CONTAINER); $.bookmark.custompage.renderListArticles(); } $.bookmark.custompage.getLinksShare = function(index, title, url) { urlEncoded = encodeURIComponent(url); titleEncoded = encodeURIComponent(title); var html = '
'; html += 'Condividi'; html += '
'; html += '
'; html += '
'; return html; } $.bookmark.custompage.renderListArticles = function() { var CUSTOM_PAGE_UL_ID = $('#'+$.bookmark.CUSTOM_PAGE_UL_ID); CUSTOM_PAGE_UL_ID.empty(); CUSTOM_PAGE_UL_ID.append($('
  • Lo leggo dopo
  • ')); var articles = $.bookmark.cookie.getBoxCookie(); var length = articles.values.length; if(length > 0){ var limit = (!$.bookmark.utils.isNull(bmPrintAll) && bmPrintAll) ? length : $.bookmark.CUSTOM_PAGE_MAX_ITEMS; var html = '
  • '; html += 'Sono presenti '+articles.values.length+' articoli salvati su un massimo di '+$.bookmark.ARTICLES_MAX_LIMIT+''; html += '
  • '; CUSTOM_PAGE_UL_ID.append($(html)); var html = '
  • '; html = ''; html += ''; html += ''; html += ''; html += '
    TitoloData salvataggioUtility
    '; html += '
  • '; var table = $(html); CUSTOM_PAGE_UL_ID.append(table); var tbody = table.find("tbody"); var sorted = articles.values.sort($.bookmark.utils.sort); var css = 'odd'; var renderShares = function(container, url, title, desc, image){ id = $.bookmark.SHARE_OVERLAY_CLASS + "-" + Math.floor((Math.random()*1000000000)); container.attr("id", id); var conf = { containerID: id ,gsUrl: url ,gsTitle: title ,gsDescription: desc ,gsImage: image ,gsOrderButtons: ["twitter-tweet", "google-plusone", "facebook-like"] }; if(window.gsPlugins) window.gsPlugins.showShareBarUI(conf); } $.each(sorted,function(i,e){ if(i < limit){ var title = e[$.bookmark.FILED_OG_TITLE]; var url = e[$.bookmark.FILED_OG_URL]; var image = e[$.bookmark.FILED_OG_IMAGE]; var desc = e[$.bookmark.FILED_OG_DESCRIPTION].substring(0,$.bookmark.SUMMARY_MAX_LENGHT)+"..."; var author = e[$.bookmark.FILED_AUTHOR]; var dp = e[$.bookmark.FILED_PUB_DATE]; var ts = parseInt(e[$.bookmark.FILED_TIMESTAMP]); var dt = new Date(ts); var day = (dt.getDate()<10) ? "0"+dt.getDate() : dt.getDate(); //var month = (dt.getMonth()<10) ? "0"+dt.getMonth() : dt.getMonth(); var months = $.bookmark.MONTHS; var month = months[dt.getMonth()]; var ds = day+' '+month+' '+dt.getFullYear(); var share = $.bookmark.custompage.getLinksShare(i, title,url); css = (i%2) ? 'even' : 'odd'; var html = ''; html += ''+title+'
    '+desc+''; html += ''+ds+''; html += ''+share; html += 'Stampa'; html += 'Cancella';; html += ''; html += ''; var row = $(html); tbody.append(row); var container = row.find('.'+$.bookmark.SHARE_OVERLAY_CLASS); renderShares(container, url, title, desc, image); var shareclick1 = function(){ container.removeClass("initial"); container.fadeToggle($.bookmark.SHARE_OVERLAY_EFFECT_TIME); } row.find('.'+$.bookmark.SHARE_CONTAINER_CLASS).click(shareclick1); } }); if($.bookmark.utils.isNull(bmPrintAll) || !bmPrintAll) CUSTOM_PAGE_UL_ID.append($('
  • Vedi tutti
  • ')); //print action $("."+$.bookmark.CUSTOM_PAGE_CLASS_PRINT).click(function(){ var index = $(this).attr("id").replace($.bookmark.CUSTOM_PAGE_PATTERN_PRINT,''); var art = sorted[index]; var url = art[$.bookmark.FILED_OG_URL]; $.bookmark.custompage.getContent(url); }); //delete action $("."+$.bookmark.CUSTOM_PAGE_CLASS_DELETE).click(function(){ var index = $(this).attr("id").replace($.bookmark.CUSTOM_PAGE_PATTERN_DELETE,''); var art = sorted[index]; $.bookmark.custompage.deleteConfirm(art[$.bookmark.FILED_OG_URL]); }); //table sorter code $("#"+$.bookmark.TABLE_SORTER_ID).tablesorter({ sortList: [[1,1]], widgets: [$.bookmark.TABLE_SORTER_WIDGET], headers: { 1: {sorter: 'gs_date'}, 2: {sorter: false} } }); }else{ var html = '
  • Nessun articolo salvato. Per salvare una notizia clicca sul tasto presente nella pagina dell\'articolo:
    Lo leggo dopo
  • '; CUSTOM_PAGE_UL_ID.append($(html)); } $.neodata.utils.fixLayoutBox(); } $.bookmark.custompage.deleteConfirm = function(url) { GeleSocial.confirm($.bookmark.ACTION_MSG_CONFIRM_DELETE, function(answer){ if (answer){ $.bookmark.deleteItem(url); $.bookmark.custompage.renderListArticles(); } }); } $.bookmark.custompage.getContent = function(url) { $.bookmark.debug("custompage.getContent function"); GeleSocial.openModal($.bookmark.CUSTOM_PAGE_POPUP_URL+url,null,$.bookmark.CUSTOM_PAGE_POPUP_WIDTH,$.bookmark.CUSTOM_PAGE_POPUP_HEIGHT); } $.bookmark.custompage.renderDetailArticle = function() { } /*---------------------- Class Render -------------------------------------------*/ $.bookmark.render = {}; $.bookmark.render = function(parameters, func) { if(!$.bookmark.utils.isNull(func) && !$.bookmark.utils.isNull(parameters) && $.isFunction(func)) func(parameters); } /*---------------------- Class Alerting -------------------------------------------*/ $.bookmark.alerting = {}; $.bookmark.alerting = function(msg){ GeleSocial.alert(msg); } /*---------------------- Class Cookie -------------------------------------------*/ $.bookmark.cookie = {} $.bookmark.cookie.getBoxCookie = function(force){ force = (!$.bookmark.utils.isNull(force)) ? force : false; var cookie = GeleSocial.getBoxCookie($.bookmark.COOKIE_NAME, force); var ret = {"values":new Array()}; $.bookmark.debug(cookie); if(!$.bookmark.utils.isNull(cookie) && !$.bookmark.utils.isNull(cookie.values)){ var v = cookie.values; if(v){ var json = window.JSON.parse(unescape(v)); ret = {"values":json}; } } return ret; } $.bookmark.cookie.setBoxCookie = function(v){ $.bookmark.log("setBoxCookie function"); var ret = new Array(); $.bookmark.debug(v); if(!$.bookmark.utils.isNull(v) && !$.bookmark.utils.isNull(v.values) && !$.bookmark.utils.isObjectNull(v.values)){ $.bookmark.log("setCookieValueIntoString"); ret = v.values; } $.bookmark.debug(ret); GeleSocial.setBoxCookie($.bookmark.COOKIE_NAME, {"values" : escape(JSON.stringify(ret))}); //aggiungere controllo di ritorno se redis non ha salvato } /*---------------------- Class Log -------------------------------------------*/ $.bookmark.log = function(obj) { if(window.console) window.console.log("bookmark: "+obj); } $.bookmark.debug = function(obj) { if(settings.debug && typeof window.console!='undefined' && typeof window.console.debug!='undefined' && typeof window.console.debug!='undefined') { $.bookmark.log(""); console.debug(obj); } } /*---------------------- Class Utils -------------------------------------------*/ $.bookmark.utils = {} $.bookmark.utils.isNull = function(v) { return !(!typeof(v)!='undefined' && v!=null && v!="null"); } $.bookmark.utils.isObjectNull = function(v) { return $.bookmark.utils.getObjectLength(v)==0; } $.bookmark.utils.getObjectLength = function(obj) { var size=0, key; for(key in obj) { size++; } return size; } $.bookmark.utils.isEmptyString = function(v) { return GeleSocial.utils.isEmptyString(v); } $.bookmark.utils.stripslashesSingleQuote = function(v) { return v.replace(/\\\'/g,'\''); } $.bookmark.utils.stripslashesQuote = function(v) { return v.replace(/\\\"/g,'\"'); } $.bookmark.utils.trim = function(v) { return v.replace(/^\s+|\s+$/g,""); } $.bookmark.utils.timestamp = function(){ var d =new Date(); return d.getTime(); } $.bookmark.utils.ucwords = function(str){ return (str + '').replace(/^([a-z])|\s+([a-z])/g, function ($1) { return $1.toUpperCase(); }); } $.bookmark.utils.sort = function(a,b){ return a[$.bookmark.FILED_TIMESTAMP] > b[$.bookmark.FILED_TIMESTAMP] ? -1 : 1; } })(jQuery);