blob: 94f19709e66046d334b9e535d2f930a2630130c2 [file] [log] [blame]
/**
* @module jQuery RD Twitter Feed
* @author Rafael Shayvolodyan (raffa)
* @see https://ua.linkedin.com/in/rafael-shayvolodyan-3a297b96
* @version 1.0.2
*/
(function(){(function(l,n,p){return function(){function g(a,b){this.options=l.extend(!0,{},this.Defaults,b);this.$element=l(a);this.initialize()}g.prototype.Defaults={username:"templatemonster",list:null,hashtag:null,hideReplies:!0,dateFormat:"%b/%d/%Y",apiPath:"bat/twitter_api/tweet.php",loadingText:"Loading...",localTemplate:{message:"This is sample tweet for local testing. Upload your project to the live hosting server for get data from twitter.com",serverMessage:"RD Twitter Feed: Please upload project to the server for enable plugin!",
user_name:"TemplateMonster",date:"Fri Nov 06 11:20:43 +0000 2015",tweet:"Check Out NEW #Photographer Portfolio Responsive Photo - goo.gl/ECjPvq",avatar:"http://pbs.twimg.com/profile_images/611164752396419072/hJYLqLJR_normal.jpg",url:"https://twitter.com/templatemonster/status/660069673464160256",screen_name:"@templatemonster",media_url:["https://pbs.twimg.com/media/CS6HxzwUEAALx0y.jpg","http://pbs.twimg.com/media/CShUCIYUcAABb53.jpg"]},dateText:{seconds:"less 1m",minutes:"m",hours:"h",yesterday:"yd"},
callback:!1};g.prototype.initialize=function(){var a;a=this.$element;this.options.list&&!this.options.username&&console.error("If you want to fetch tweets from a list, you must define the username of the list owner.");if(this.isLocal())a.prepend("<h6>"+this.options.localTemplate.message+"</h6>");else if(!this.isServer()){a.prepend("<h6>"+this.options.localTemplate.serverMessage+"</h6>");return}a.append('<span id="loading_tweet">'+(a.attr("data-twitter-loading")?a.attr("data-twitter-loading"):this.options.loadingText+"</span>"));this.fetch()};g.prototype.linking=function(a,b){var c,d,e,h,f,k,g,m,l;m=a.replace(/#([a-zA-Z0-9_]+)/g,'<a href="https://twitter.com/search?q=%23$1&amp;src=hash" target="_blank" title="Search for #$1">#$1</a>').replace(/@([a-zA-Z0-9_]+)/g,'<a href="https://twitter.com/$1" target="_blank" title="$1 on Twitter">@$1</a>');k=a.match(/(https?:\/\/([-\w\.]+)+(:\d+)?(\/([\w\/_\.]*(\?\S+)?)?)?)/ig);if(null!==k)for(c=0,e=k.length;c<e;c++){f=k[c];g=b.entities.urls;d=0;for(h=g.length;d<h;d++)l=g[d], m=m.replace(f,'<a href="'+l.expanded_url+'" target="_blank">'+l.display_url+"</a> ");m=m.replace(f,"")}return m};g.prototype.dating=function(a,b){var c,d,e,h,f,k;c=a.split(" ");a=new Date(Date.parse(c[1]+" "+c[2]+", "+c[5]+" "+c[3]+" UTC"));e=((new Date).getTime()-a.getTime())/1E3;c="January February March April May June July August September October November December".split(" ");c={"%d":a.getDate(),"%m":a.getMonth()+1,"%b":c[a.getMonth()].substr(0,3),"%B":c[a.getMonth()],"%y":String(a.getFullYear()).slice(-2), "%Y":a.getFullYear()};d=b?"%Y-%m-%d":this.$element.attr("data-twitter-date-format")?this.$element.attr("data-twitter-date-format"):this.options.dateFormat;if(60>e)return this.$element.attr("data-twitter-date-seconds")?this.$element.attr("data-twitter-date-seconds"):this.options.dateText.seconds;if(60>e/60)return Math.round(e/60)+(this.$element.attr("data-twitter-date-minutes")?this.$element.attr("data-twitter-date-minutes"):this.options.dateText.minutes);if(24>e/60/60)return Math.round(e/60/60)+(this.$element.attr("data-twitter-date-hours")?this.$element.attr("data-twitter-date-hours"):this.options.dateText.hours);if(2>e/60/60/24)return this.$element.attr("data-twitter-date-yesterday")?this.$element.attr("data-twitter-date-yesterday"):this.options.dateText.yesterday;h=d.match(/%[dmbByY]/g);f=0;for(k=h.length;f<k;f++)e=h[f],d=d.replace(e,c[e]);return d};g.prototype.isLocal=function(){var a,b,c,d;d=["127.0.0.1","192.168","localhost"];b=0;for(c=d.length;b<c;b++)if(a=d[b],-1<n.location.hostname.indexOf(a))return!0;return!1};g.prototype.isServer=function(){var a;a=p.location.href;return-1<a.indexOf("http://")||-1<a.indexOf("https://")?!0:!1};g.prototype.getMedia=function(a){var b,c,d,e;if(a.extended_entities){if(a.extended_entities.media){d=[];e=a.extended_entities.media;b=0;for(c=e.length;b<c;b++)a=e[b],d.push(a.media_url);return d}}else return a.entities&&a.entities.media?a.entities.media[0].media_url:null};g.prototype.getTempData=function(a,b){var c,d,e,h,f;e=a.$element.find('[data-twitter-type="tweet"]').length;h=[];if(a.isLocal())for(d=0;0<=e?d<e:d>e;0<=e?++d:--d)c={user_name:a.options.localTemplate.user_name,date:a.dating(a.options.localTemplate.date,!1),datetime:a.dating(a.options.localTemplate.date,!0),tweet:a.linking(a.options.localTemplate.tweet),avatar:a.options.localTemplate.avatar,url:a.options.localTemplate.url,retweeted:!1,screen_name:a.linking(a.options.localTemplate.screen_name),media_url:a.options.localTemplate.media_url},h.push(c);else for(c=d=0;0<=e?d<e:d>e;c=0<=e?++d:--d){if(b[c])f=b[c];else if(b.statuses&&b.statuses[c])f=b.statuses[c];else break;c={user_name:f.user.name,date:a.dating(f.created_at,!1),datetime:a.dating(f.created_at,!0),tweet:a.linking(f.text,f),avatar:f.user.profile_image_url,url:"https://twitter.com/"+f.user.screen_name+"/status/"+f.id_str,retweeted:f.retweeted,screen_name:a.linking("@"+f.user.screen_name,f)};c.media_url=a.getMedia(f);h.push(c)}return h};g.prototype.fetch=function(){var a;a=this.$element;l.getJSON(this.options.apiPath,{username:a.attr("data-twitter-username")?a.attr("data-twitter-username"):this.options.username,list:a.attr("data-twitter-listname")?a.attr("data-twitter-listname"):this.options.list,hashtag:a.attr("data-twitter-hashtag")?a.attr("data-twitter-hashtag"):this.options.hashtag,count:a.find('[data-twitter-type="tweet"]').length,exclude_replies:this.options.hideReplies},l.proxy(function(b){a.find("#loading_tweet").fadeOut("fast");this.construct(this.getTempData(this,b))},this));"function"===typeof this.options.callback&&this.options.callback()};g.prototype.construct=function(a){var b,c,d,e,h,f;c=this;b=c.$element.find('[data-twitter-type="tweet"]');d=e=0;for(f=b.length;0<=f?e<f:e>f;d=0<=f?++e:--e)"A"===b.prop("tagName")&&this.tweetLink(b.eq(d),a[d]),h=0,b.eq(d).find("*").each(function(){c.parseAttributes(this,a[d],h);this.hasAttribute("data-media_url")&&h++}),b.css("opacity","1")};g.prototype.tweetLink=function(a,b){a.attr("href",b.url)};g.prototype.parseAttributes=function(a,b,c){var d,e,h,f,k,g,m;d=l(a);f=d.data();for(k in f)if(f.hasOwnProperty(k))for(h=f[k].split(/\s?,\s?/i),g=0,m=h.length;g<m;g++)e=h[g],"text"===e.toLowerCase()?a.innerHTML=b[k]:"media_url"===k?l.isArray(b[k])&&b[k].length>c?a.setAttribute(e,b[k][c]):null!==b[k]&&0===c?a.setAttribute(e,b[k]):d.remove():a.setAttribute(e,b[k])};l.fn.extend({RDTwitter:function(a){var b;this.each(function(){});b=l(this);if(!b.data("RDTwitter"))return b.data("RDTwitter",new g(this,a))}});return g}()})(window.jQuery,document,window);"undefined"!==typeof module&&null!==module?module.exports=window.RDTwitter:"function"===typeof define&&
define.amd&&define(["jquery"],function(){return window.RDTwitter})}).call(this);