How to use CFF method in wpt

Best JavaScript code snippet using wpt

cff-scripts-ver=3.1.js

Source:cff-scripts-ver=3.1.js Github

copy

Full Screen

1var cff_js_exists = (typeof cff_js_exists !== 'undefined') ? true : false;2if(!cff_js_exists){34function cff_init( $cff ){56 //Check whether it's a touch device7 var cffTouchDevice = false;8 if (cffIsTouchDevice() === true) cffTouchDevice = true;9 function cffIsTouchDevice() {10 return true == ("ontouchstart" in window || window.DocumentTouch && document instanceof DocumentTouch);11 }1213 //If a feed selector isn't passed in then default to using selector for all feeds14 var firsttime = false;15 if(typeof $cff === 'undefined'){16 $cff = jQuery('.cff');17 firsttime = true;18 }1920 (function($){ 2122 //Toggle comments23 jQuery(document).off('click', '#cff a.cff-view-comments').on('click', '#cff a.cff-view-comments', function(){24 var $commentsBox = jQuery(this).closest('.cff-item').find('.cff-comments-box');25 26 $commentsBox.slideToggle();2728 //Add comment avatars29 $commentsBox.find('.cff-comment:visible').each(function(){30 var $thisComment = jQuery(this);31 $thisComment.find('.cff-comment-img:not(.cff-comment-reply-img) a').html( '<img src="https://graph.facebook.com/'+$thisComment.attr("data-id")+'/picture" alt="Avatar" />' );32 });3334 });3536 //Set paths for query.php37 if (typeof cffsiteurl === 'undefined' || cffsiteurl == '') cffsiteurl = window.location.host + '/wp-content/plugins';38 var locatefile = true;3940 //Create meta data array for caching likes and comments41 var metaArr = {},42 newMetaArr = {}; //For caching only new posts that are loaded4344 //Loop through the feeds on the page and add a unique attribute to each to use for lightbox groups45 var lb = 0;46 jQuery('#cff.cff-lb').each(function(){47 lb++;48 $(this).attr('data-cff-lb', lb);49 });5051 52 //If it's the first load then loop through all .cff-items on the page, otherwise, only loop through the feed where the load more button is clicked53 var $cff_post_selector = $cff.find('.cff-item.cff-new, .cff-album-item.cff-new');54 if( firsttime ){55 $cff_post_selector = jQuery('#cff .cff-item.cff-new, #cff .cff-album-item.cff-new');56 }5758 //Loop through each item59 $cff_post_selector.each(function(){6061 var $self = jQuery(this);6263 //Wpautop fix64 if( $self.find('.cff-viewpost-link, .cff-viewpost-facebook, .cff-viewpost').parent('p').length ){65 //Don't unwrap event only viewpost link66 if( !$self.hasClass('event') ) $self.find('.cff-viewpost-link, .cff-viewpost-facebook, .cff-viewpost').unwrap('p');67 }68 if( $self.find('.cff-photo').parent('p').length ){69 $self.find('p .cff-photo').unwrap('p');70 $self.find('.cff-album-icon').appendTo('.cff-photo:last');71 }72 if( $self.find('.cff-event-thumb').parent('p').length ){73 $self.find('.cff-event-thumb').unwrap('p');74 }75 if( $self.find('.cff-vidLink').parent('p').length ){76 $self.find('.cff-vidLink').unwrap('p');77 }78 if( $self.find('.cff-link').parent('p').length ){79 $self.find('.cff-link').unwrap('p');80 }81 if( $self.find('.cff-viewpost-link').parent('p').length ){82 $self.find('.cff-viewpost-link').unwrap('p');83 }84 if( $self.find('.cff-viewpost-facebook').parent('p').length ){85 $self.find('.cff-viewpost-facebook').unwrap('p');86 }8788 if( $self.find('iframe').parent('p').length ){89 $self.find('iframe').unwrap('p');90 }91 if( $self.find('.cff-author').parent('p').length ){92 $self.find('.cff-author').eq(1).unwrap('p');93 $self.find('.cff-author').eq(1).remove();94 }95 if( $self.find('.cff-view-comments').parent('p').length ){96 $self.find('.cff-meta-wrap > p').remove();97 $self.find('.cff-view-comments').eq(1).remove();98 //Move meta ul inside the link element99 var $cffMeta = $self.find('.cff-meta'),100 cffMetaClasses = $cffMeta.attr('class');101 $cffMeta.find('.cff-view-comments').unwrap().wrapInner('<ul class="'+cffMetaClasses+'">');102 }103 if( $self.find('.cff-photo').siblings('.cff-photo').length ){104 $self.find('.cff-photo').slice(0,2).remove();105 }106 //Fix the formatting issue that pushes avatar to the left107 if( $('.cff-author-img').parent().is('p') ) $('.cff-author-img').unwrap('p');108 //Remove empty p tags109 $self.find('p:empty').not('.cff-comments-box p').remove();110111112 //Expand post113 var expanded = false;114 if( $self.hasClass('cff-event') ){115 var $post_text = $self.find('.cff-desc .cff-desc-text'),116 text_limit = $post_text.parent().attr('data-char');117 } else {118 var $post_text = $self.find('.cff-post-text .cff-text'),119 text_limit = $self.closest('#cff').attr('data-char');120 }121122 if (typeof text_limit === 'undefined' || text_limit == '') text_limit = 99999;123 124 //If the text is linked then use the text within the link125 if ( $post_text.find('a.cff-post-text-link').length ) $post_text = $self.find('.cff-post-text .cff-text a');126 var full_text = $post_text.html();127 if(full_text == undefined) full_text = '';128129130 //Truncate text taking HTML tags into account131 var cff_trunc_regx = new RegExp(/(<[^>]*>)/g);132 var cff_trunc_counter = 0;133134 //convert the string in array using the HTML tags as delimiter and keeping they as array elements135 full_text_arr = full_text.split(cff_trunc_regx);136137 for (var i = 0, len = full_text_arr.length; i < len; i++) {138 //ignore the array elements that is HTML tags139 if ( !(cff_trunc_regx.test(full_text_arr[i])) ) {140 //if the counter is 100, remove this element with text141 if (cff_trunc_counter == text_limit) {142 full_text_arr.splice(i, 1);143 continue; //ignore next commands and continue the for loop144 }145 //if the counter != 100, increase the counter with this element length146 cff_trunc_counter = cff_trunc_counter + full_text_arr[i].length;147 //if is over 100, slice the text of this element to match the total of 100 chars and set the counter to 100148 if (cff_trunc_counter > text_limit) {149 var diff = cff_trunc_counter - text_limit;150 full_text_arr[i] = full_text_arr[i].slice(0, -diff);151 cff_trunc_counter = text_limit;152153 //Show the 'See More' link if needed154 if (full_text.length > text_limit) $self.find('.cff-expand').show();155 }156 }157 }158159 //new string from the array160 short_text = full_text_arr.join('');161162 //remove empty html tags from the array163 var short_text = short_text.replace(/(<(?!\/)[^>]+>)+(<\/[^>]+>)/g, "");164165 //If the short text cuts off in the middle of a <br> tag then remove the stray '<' which is displayed166 var lastChar = short_text.substr(short_text.length - 1);167 if(lastChar == '<') short_text = short_text.substring(0, short_text.length - 1);168169 //Remove any <br> tags from the end of the short_text170 short_text = short_text.replace(/(<br>\s*)+$/,''); 171 short_text = short_text.replace(/(<img class="cff-linebreak">\s*)+$/,''); 172173 //Cut the text based on limits set174 $post_text.html( short_text );175176177 //Click function178 $self.find('.cff-expand a').unbind('click').bind('click', function(e){179 e.preventDefault();180 var $expand = jQuery(this),181 $more = $expand.find('.cff-more'),182 $less = $expand.find('.cff-less');183 if (expanded == false){184 $post_text.html( full_text );185 expanded = true;186 $more.hide();187 $less.show();188 } else {189 $post_text.html( short_text );190 expanded = false;191 $more.show();192 $less.hide(); 193 }194 cffLinkHashtags();195 //Add target to links in text when expanded196 $post_text.find('a').attr('target', '_blank');197198 //Re-init masonry for JS199 if( $self.closest('.cff').hasClass('cff-masonry') && !$self.closest('.cff').hasClass('cff-masonry-css') ){200 cffAddMasonry($cff);201 }202203 });204 //Add target attr to post text links via JS so aren't included in char count205 $post_text.find('a').add( $self.find('.cff-post-desc a') ).attr({206 'target' : '_blank',207 'rel' : 'nofollow'208 });209210211 //This is the modified Post ID - so if the post is an album post then this could be the album ID which is used to get the lightbox thumbs212 var post_id = $self.attr('id').substring(4),213 //This is the original post ID which is used to get the number of likes and comments for the timeline post214 post_id_orig = $self.find('.cff-view-comments').attr('id');215216 if( locatefile != true ) $self.find('.cff-lightbox-thumbs-holder').css('min-height', 0);217 218219 //Show all comments on click220 jQuery(document).off('click', '#cff .cff-show-more-comments, .cff-lightbox-sidebar .cff-show-more-comments').on('click', '#cff .cff-show-more-comments, .cff-lightbox-sidebar .cff-show-more-comments', function(){221222 var $cffMoreCommentsLink = jQuery(this),223 thisCommentsTotal = parseInt($cffMoreCommentsLink.attr('data-cff-comments-total'));224225 //If there's more than 25 comments then link the "View more comments" link to post on Facebook226 if( $cffMoreCommentsLink.hasClass('cff-clicked') && thisCommentsTotal > 25 ){227 //Link to Facebook228 $cffMoreCommentsLink.find('a').attr({229 'href' : $cffMoreCommentsLink.closest('.cff-comments-box').find('.cff-comment-on-facebook a').attr('href'),230 'target' : '_blank'231 });232 }233 //Hide 'View more comments' link234 if( thisCommentsTotal <= 25 ) $cffMoreCommentsLink.hide();235236 //Add class so we can only trigger the above on the second click237 $cffMoreCommentsLink.addClass('cff-clicked');238239 //Show comments and add comment avatars240 $cffMoreCommentsLink.parent().find('.cff-comment').show().each(function(){241 var $thisComment = jQuery(this);242 $thisComment.find('.cff-comment-img:not(.cff-comment-reply-img) a').html( '<img src="https://graph.facebook.com/'+$thisComment.attr("data-id")+'/picture" alt="Avatar" />' );243 });244 });245 246247 //Remove event end date day if the same as the start date248 if( $self.hasClass('cff-timeline-event') || $self.hasClass('cff-event') ){249 if( $(this).find('.cff-date .cff-start-date k').text() !== $(this).find('.cff-date .cff-end-date k').text() ) $(this).find('.cff-date .cff-end-date k').show();250 }251252253 //Replace Photon (Jetpack CDN) images with the originals again254 var $cffPhotoImg = $self.find('.cff-photo img, .cff-event-thumb img, .cff-poster, .cff-album-cover img'),255 cffPhotoImgSrc = $cffPhotoImg.attr('src'),256 cffImgStringAttr = $cffPhotoImg.attr('data-querystring');257258 if( typeof cffPhotoImgSrc == 'undefined' ) cffPhotoImgSrc = '';259260 if( cffPhotoImgSrc.indexOf('i0.wp.com') > -1 || cffPhotoImgSrc.indexOf('i1.wp.com') > -1 || cffPhotoImgSrc.indexOf('i2.wp.com') > -1 || cffPhotoImgSrc.indexOf('i3.wp.com') > -1 || cffPhotoImgSrc.indexOf('i4.wp.com') > -1 || cffPhotoImgSrc.indexOf('i5.wp.com') > -1 ){261 262 //Create new src. Single slash in https is intentional as one is left over from removing i_.wp.com263 var photonSrc = $cffPhotoImg.attr('src').substring(0, $cffPhotoImg.attr('src').indexOf('?')),264 newSrc = photonSrc.replace('http://', 'https:/').replace(/i0.wp.com|i1.wp.com|i2.wp.com|i3.wp.com|i4.wp.com|i5.wp.com/gi, '') + '?' + cffImgStringAttr;265266 $cffPhotoImg.attr('src', newSrc);267 }268269 function cffLinkHashtags(){270 //Link hashtags271 var cffTextStr = $self.find('.cff-text').html(),272 cffDescStr = $self.find('.cff-post-desc').html(),273 regex = /(^|\s)#(\w*[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]+\w*)/gi,274275 linkcolor = $self.find('.cff-text').attr('data-color');276277 function replacer(hash){278 //Remove white space at beginning of hash279 var replacementString = jQuery.trim(hash);280 //If the hash is a hex code then don't replace it with a link as it's likely in the style attr, eg: "color: #ff0000"281 if ( /^#[0-9A-F]{6}$/i.test( replacementString ) ){282 return replacementString;283 } else {284 return ' <a href="https://www.facebook.com/hashtag/'+ replacementString.substring(1) +'" target="_blank" rel="nofollow" style="color:#' + linkcolor + '">' + replacementString + '</a>';285 }286 }287288 if(cfflinkhashtags == 'true'){289 //Replace hashtags in text290 var $cffText = $self.find('.cff-text');291 292 if($cffText.length > 0){293 //Add a space after all <br> tags so that #hashtags immediately after them are also converted to hashtag links. Without the space they aren't captured by the regex.294 cffTextStr = cffTextStr.replace(/<br>/g, "<br> ");295 $cffText.html( cffTextStr.replace( regex , replacer ) );296 }297 }298299 //Replace hashtags in desc300 if( $self.find('.cff-post-desc').length > 0 ) $self.find('.cff-post-desc').html( cffDescStr.replace( regex , replacer ) );301 }302 cffLinkHashtags();303304 //Add target attr to post text links via JS so aren't included in char count305 $self.find('.cff-text a').attr('target', '_blank');306307308 //Add lightbox tile link to photos309 if( $self.closest('#cff').hasClass('cff-lb') ){310 $self.find('.cff-photo, .cff-album-cover, .cff-event-thumb, .cff-html5-video, .cff-iframe-wrap').each(function(){311 var $photo = $(this),312 postId = post_id,313 cffLightboxTitle = '',314 cffShowThumbs = false,315 postType = '',316 cffgroupalbums = '';317318319 // if( $self.hasClass('cff-album') || $self.hasClass('cff-albums-only') ) cffShowThumbs = true;320 cffShowThumbs = true;321322 function cffFormatCaption(text){323 return String(text).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/\n/g, "<br/>");324 }325326 //Set the caption/title327 if( $self.hasClass('cff-albums-only') ){328 postType = 'albumsonly';329 cffLightboxTitle = cffFormatCaption( $self.find('img').attr('alt') );330 331 //Check whether there's an absolute path attr and if there is then add it to the query332 var dataGroup = $self.closest('#cff').attr('data-group');333 if( typeof dataGroup !== 'undefined' ) cffgroupalbums = 'data-cffgroupalbums="true"';334335 } else if( $self.hasClass('cff-timeline-event') ) {336 var capText = '';337 if( $self.find('.cff-author-text .cff-page-name').length ) capText += $self.find('.cff-author-text .cff-page-name').text() + '<br /><br />';338 //Display the full event details but the info is hidden in CSS as it's too long in some cases339 if( full_text.length > 5 ) capText += full_text;340 cffLightboxTitle = cffFormatCaption( capText );341 } else if ( $self.hasClass('cff-event') ) {342 cffLightboxTitle = cffFormatCaption( $self.find('.cff-date').text() );343 } else if( $self.hasClass('cff-album-item') ) {344 cffLightboxTitle = cffFormatCaption( $self.find('img').attr('alt') );345 } else {346 var lb_title = full_text;347 //If there's no post text then use the description348 if( full_text.trim() == '' ) lb_title = $self.find('.cff-post-desc').text();349350 //If there's no post text or desc then use the story351 if( lb_title == '' && $self.find('.cff-author .cff-story').length ) lb_title = $self.find('.cff-author .cff-page-name').text();352353 //If there's no text at all then just set it to be a space so that it renders as blank, otherwise it will use the caption from the post before354 if( lb_title == '' ) lb_title = '&nbsp;';355356 cffLightboxTitle = cffFormatCaption( lb_title );357 }358359 if(cffLightboxTitle.length > 1) cffLightboxTitle = cffLightboxTitle.replace(/"/g, '&quot;');360361362 //Create the lightbox link363 //Add the hover tile364 var cffLightboxTile = '<a class="cff-lightbox-link" rel="nofollow" ';365366 //If it's a YouTube or Vimeo then set the poster image to use in the lightbox367 if( $photo.hasClass('cff-iframe-wrap') ){368 //Add the image to the video lightbox placeholder as a query string so that the href value is unique and is added to the lightbox order. Otherwise, if it doesn't contain the query string then all videos that use the placeholder have the same URL and so they aren't added to the lightbox order. The actual video image is very small and so we need to use the placeholder to have the video display larger in the lightbox:369 cffLightboxTile += 'href="'+cffsiteurl+'/custom-facebook-feed-pro/img/video-lightbox.png?'+$photo.find('img').attr('src')+'" data-iframe="'+$photo.find('iframe').attr('src')+'" ';370 //If it's a swf then display it in an iframe371 } else if( $photo.hasClass('cff-swf') ) {372 cffLightboxTile += 'href="'+cffsiteurl+'/custom-facebook-feed-pro/img/video-lightbox.png" data-iframe="'+$photo.find('video').attr('src')+'" ';373 } else {374 var lb_href = $photo.find('img').attr('src');375 if( $photo.find('img').attr('data-cff-full-img') ) lb_href = $photo.find('img').attr('data-cff-full-img');376 cffLightboxTile += 'href="'+lb_href+'" data-iframe="" ';377 }378379 //No nav380 // cffLightboxTile += 'data-cff-lightbox="'+postId+'" data-title="'+cffLightboxTitle+'" data-id="'+postId+'" data-thumbs="'+cffShowThumbs+'" ';381 cffLightboxTile += 'data-cff-lightbox="cff-lightbox-'+$self.closest("#cff").attr("data-cff-lb")+'" data-title="'+cffLightboxTitle+'" data-id="'+postId+'" data-thumbs="'+cffShowThumbs+'" '+cffgroupalbums+' ';382383 //If it's an HTML5 video then set the data-video attr384 if( $photo.hasClass('cff-html5-video') ){385386 if($photo.hasClass('cff-swf')){387 cffLightboxTile += 'data-url="'+$photo.find('.cff-html5-play').attr('href')+'" data-video="';388 } else {389 cffLightboxTile += 'data-url="'+$photo.find('.cff-html5-play').attr('href')+'" data-video="'+$photo.find('video').attr('src');390 }391392 //Videos only:393 } else if( $photo.hasClass('cff-video') ) {394 cffLightboxTile += 'data-url="http://facebook.com/'+$photo.attr('id')+'" data-video="'+$photo.attr('data-source');395396 } else if( $photo.hasClass('cff-iframe-wrap') ) {397 cffLightboxTile += 'data-url="http://facebook.com/'+post_id+'" data-video="';398 } else {399 cffLightboxTile += 'data-url="'+$photo.attr('href')+'" data-video="';400 }401402 cffLightboxTile += '" data-type="'+postType+'" data-lb-comments="'+$photo.closest('.cff-lb').attr('data-lb-comments')+'"><div class="cff-photo-hover"><i class="fa fa-arrows-alt"></i></div></a>';403404 //Add the link to the photos/videos in the feed405 $photo.prepend(cffLightboxTile);406407 if( !cffTouchDevice ){ //Only apply hover effect if not touch screen device408 //Fade in links on hover409 $photo.hover(function(){410 $self.find('.cff-photo-hover').fadeIn(200);411 }, function(){412 $self.find('.cff-photo-hover').stop().fadeOut(600);413 });414 }415416 });417 }418419 //Share tooltip function420 // jQuery(document).on('click', '.cff-share-link', function(){421 // $(this).siblings('.cff-share-tooltip').toggle();422 // });423 $self.find('.cff-share-link').unbind().bind('click', function(){424 $self.find('.cff-share-tooltip').toggle();425 });426427428 //Photos only429 if( $self.hasClass('cff-album-item') ){430 var cff_data_full_size = $self.attr('data-cff-full-size');431 if( typeof cff_data_full_size !== 'undefined' && cff_data_full_size != '' ) $self.find('.cff-lightbox-link').attr('href', cff_data_full_size);432 }433434 //Add the HD video player435 //If it's a video post then add the video link to the video element so it can be used in the lightbox436 if( ( $self.find('.cff-html5-video').length || $self.hasClass('cff-video') ) ){437 438 var cff_live_video = false;439440 //Set the selector based on whether it's a timeline vid or videos only441 if( $self.find('.cff-html5-video').length ){442 var $vid_sel = $self.find('.cff-html5-video');443 if( $vid_sel.attr('data-cff-live') == 'true' ) cff_live_video = true;444 }445 if( $self.hasClass('cff-video') ) var $vid_sel = $self;446447 if( cff_live_video && $(window).width() <= 640 ){448 //If it's live video and on mobile then use HTMl5 player as live video doesn't work on mobile using Facebook player449 } else {450451 //If the Facebook Player is selected then pass the iframe URL into the lightbox.452 if( $vid_sel.attr('data-cff-video-player') != 'standard' ){453 $self.find('.cff-lightbox-link').attr({454 'data-iframe' : 'https://www.facebook.com/v2.3/plugins/video.php?href=' + $vid_sel.attr('data-cff-video-link'),455 'data-video' : ''456 });457 }458459 }460461 }462463 //Try to fix any video wrapper formatting issues464 setTimeout(function(){465 $self.find('.cff-iframe-wrap .fluid-width-video-wrapper iframe').unwrap().wrap('<div style="float: left; width: 100%;"></div>');466 $self.find('.cff-iframe-wrap .iframe-embed iframe').unwrap('iframe-embed');467 }, 500);468469470 }); //End .cff-item each471472 473 //Load comment replies474 jQuery(document).off('click', '.cff-comment-replies a').on('click', '.cff-comment-replies a', function(){475 cffLoadCommentReplies( $(this) );476 });477478479 $('.cff-wrapper').each(function(){480 var $cff = $(this).find('#cff'),481 cff_grid_pag = $cff.attr('data-grid-pag');482483 //Allow us to make some tweaks when the feed is narrow484 function cffCheckWidth(){485 if( $cff.innerWidth() < 400 ){486 if( !$cff.hasClass('cff-disable-narrow') ){487 $cff.addClass('narrow');488 //Use full-size shared link images on narrow layout, unless setting is unchecked489 $('.cff-shared-link .cff-link').each(function(){490 //$(this).find('img').attr('src', $(this).attr('data-full') );491 });492 }493 } else {494 $cff.removeClass('narrow');495 }496 }497 cffCheckWidth();498499 function cffActionLinksPos(){500 if( $cff.innerWidth() < (190 + $('.cff-post-links').innerWidth() ) ){501 $cff.find('.cff-post-links').addClass('cff-left')502 } else {503 $cff.find('.cff-post-links').removeClass('cff-left');504 }505 }506 cffActionLinksPos();507508 //Only check the width once the resize event is over509 var cffdelay = (function(){510 var cfftimer = 0;511 return function(cffcallback, cffms){512 clearTimeout (cfftimer);513 cfftimer = setTimeout(cffcallback, cffms);514 };515 })();516 window.addEventListener('resize', function(event){517 cffdelay(function(){518 cffCheckWidth();519 cffActionLinksPos();520 cffResizeAlbum();521 }, 500);522 });523524 //Albums only525 //Resize image height526 function cffResizeAlbum(last){527 var cffAlbumWidth = $cff.find('.cff-album-item').eq(0).find('a').innerWidth();528 $cff.find('.cff-album-item a').css('height', cffAlbumWidth);529 //Crops event images when selected530 $cff.find('.cff-photo.cff-crop').css( 'height', $cff.find('.cff-photo.cff-crop').width() );531532 //Sets crop height of main post image to be 60% (or the height of the thumbs - whichever is larger - so it's never shorter than the thumbs) to make room for the thumbs beneath533 $cff.find('.cff-item.cff-album .cff-photo.cff-multiple, .cff-video-post .cff-html5-video.cff-multiple').each(function(){534 // $cff.find('.cff-item.cff-album, .cff-video-post').each(function(){535 var $cffPhotoEl = $(this);536537 //Crop image attachments in posts538 var cffPhotoImgWidth = $cffPhotoEl.find('img').first().width();539 if( cffPhotoImgWidth < 10 ) cffPhotoImgWidth = 300;540541 if($cffPhotoEl.hasClass('cff-img-layout-3')) $cffPhotoEl.find('.cff-img-attachments .cff-crop').css( 'height', cffPhotoImgWidth/2 );542 if($cffPhotoEl.hasClass('cff-img-layout-4')) $cffPhotoEl.find('.cff-img-attachments .cff-crop').css( 'height', cffPhotoImgWidth/3 );543544 //Crop main image545 if( $cffPhotoEl.is('.cff-img-layout-3, .cff-img-layout-4') ){546 var $cffMainImage = $cffPhotoEl.find('.cff-main-image'),547 cropPercentage = 0.6;548 if( $cffPhotoEl.hasClass('cff-img-layout-4') ) cropPercentage = 0.8;549550 //Set the height based on ratio551 var cffImageHeight = Math.round( cffPhotoImgWidth / $cffMainImage.find('img').attr('data-ratio') );552 $cffMainImage.css( 'height', Math.round( Math.max(cffImageHeight*cropPercentage, $cffPhotoEl.find('.cff-img-attachments').height() ) ) );553 } else if( $cffPhotoEl.is('.cff-img-layout-2') ) {554 var $cffCrop = $cffPhotoEl.find('.cff-img-wrap.cff-crop');555 if( $cffPhotoEl.hasClass('cff-portrait') ){556 $cffPhotoEl.find('.cff-img-wrap.cff-crop').css('height', $cffPhotoEl.width()*0.8 );557 } else {558 $cffPhotoEl.find('.cff-img-wrap.cff-crop').css('height', $cffPhotoEl.width()/2 );559 }560 }561562 //If the main image is being cropped to zero then remove the crop so the full image is shown563 if( last == true && ( $cffPhotoEl.is('.cff-img-layout-3') || $cffPhotoEl.is('.cff-img-layout-4') ) && $cffPhotoEl.find('.cff-main-image').height() < 10 ) $cffPhotoEl.find('.cff-img-layout-3 .cff-main-image img, .cff-img-layout-4 .cff-main-image img').css({564 'display' : 'block',565 'visibility' : 'visible'566 })567568 //Make "+6" text small if the images are small569 if( cffPhotoImgWidth < 200 ){570 $cffPhotoEl.addClass('cff-small-layout');571 } else {572 $cffPhotoEl.removeClass('cff-small-layout');573 }574 });575 576 }577 cffResizeAlbum(false);578 setTimeout(function(){ cffResizeAlbum(false); }, 50);579 setTimeout(function(){ cffResizeAlbum(true); }, 500);580 setTimeout(function(){ cffResizeAlbum(true); }, 1500);581582583 //PAGINATION584 //Events JS pagination585 var num_events = parseInt( $cff.attr('data-pag-num') ),586 show_events = num_events; //Iterated for each set587 //Show first set of events588 $cff.find('.cff-event').slice(0, num_events).css('display', 'inline-block');589 //cffResizeAlbum(); //Correctly recalcs height of event images when using eventimage=cropped590591 //Review JS pagination592 if( $cff.hasClass('cff-all-reviews') ){593 var num_reviews = parseInt( $cff.attr('data-pag-num') ),594 show_reviews = num_reviews;595596 //Offset597 var review_offset = parseInt($cff.attr('data-offset'));598 if( typeof review_offset == 'undefined' || isNaN(review_offset) ) review_offset = 0;599600 $cff.find('.cff-review').slice(0, num_reviews + review_offset ).css('display', 'inline-block');601602 //Hide some reviews if using offset setting603 if( review_offset > 0 ) $cff.find('.cff-review').slice(0, review_offset ).remove();604 }605606 //Set a data attr that lets us know whether no posts were loaded into the feed so that we can change the "until" value in the next request607 var $cffLoadMore = $cff.find('#cff-load-more'),608 cff_no_posts_added = $cff.find('.cff-load-more').attr('data-cff-no-posts-added');609 if (typeof cff_no_posts_added == typeof undefined || cff_no_posts_added == false) {610 $cffLoadMore.attr('data-cff-no-posts-added', 'false');611 }612613 //If there's no posts in the feed initially then set the data-attr to be true614 if( $cff.find('.cff-item, .cff-album-item').length < 1 ) $cffLoadMore.attr('data-cff-no-posts-added', 'true');615616 // add the load more button and input to simulate a dynamic json file call617 $cffLoadMore.off().on('click', function() {618619 // read the json that is in the cff-data-shortcode that contains all of the shortcode arguments620 var shortcodeData = $cff.attr('data-cff-shortcode'),621 $paginationURL = $cff.find('.cff-pag-url'),622 pag_url = $paginationURL.attr('data-cff-pag-url');623624 //Events JS pagination625 var events_count = $cff.find('.cff-event').length;626 //If it's an event feed627 if( events_count > 0 ){628 show_events = show_events + num_events;629 //Show the next set of events630 $cff.find('.cff-event').slice(0, show_events).css('display', 'inline-block');631 if( show_events > events_count ){632 $cff.find('#cff-load-more').hide();633 cff_no_more_posts($cff, $cffLoadMore);634 }635636 //Re-init masonry for JS637 if( $cff.hasClass('cff-masonry') && !$cff.hasClass('cff-masonry-css') ){638 cffAddMasonry($cff);639 }640 return;641 }642643 //Reviews JS pagination644 if( $cff.hasClass('cff-all-reviews') ){645 var reviews_count = $cff.find('.cff-review').length;646 //If it's an reviews feed647 if( reviews_count > 0 ){648 show_reviews = show_reviews + num_reviews;649 //Show the next set of reviews650 $cff.find('.cff-review').slice(0, show_reviews).css('display', 'inline-block');651 if( show_reviews > reviews_count ){652 $cff.find('#cff-load-more').hide();653 cff_no_more_posts($cff, $cffLoadMore);654 }655656 //Re-init masonry for JS657 if( $cff.hasClass('cff-masonry') && !$cff.hasClass('cff-masonry-css') ){658 cffAddMasonry($cff);659 }660 return;661 }662 }663664665 //Remove the ID so it can't be clicked twice before the posts are loaded666 $cffLoadMore.off().removeAttr('id').addClass('cff-disabled');667668 // remove the hidden field since it will be replaced with new before token and after token next url data669 $paginationURL.remove();670671 672 //If it's a photo/vid/album feed then change the selector673 if( $cff.hasClass('cff-album-items-feed') ){674 var item_sel = '.cff-album-item';675 } else {676 var item_sel = '.cff-item';677 }678679 if( item_sel == '.cff-album-item' ){680 //If the next_url is empty then use the prev_url681 if( (pag_url == '' || pag_url == '{}') ) pag_url = $paginationURL.attr('data-cff-prev-url');682683 //Loop through the previous URLs and if the next URL is empty for an ID then add it in684 var prev_urls = $paginationURL.attr('data-cff-prev-url');685686 //Convert the JSON string into an object so we can loop through it687 var prev_urls_arr = ( typeof prev_urls == 'undefined' ) ? '' : JSON.parse( prev_urls );688 }689690 //Parse the urls string into an array so we can loop through it691 var pag_url_arr = ( typeof pag_url == 'undefined' ) ? '' : JSON.parse( pag_url );692693 if( item_sel == '.cff-album-item' ){694 //Add the URL to the next_urls if it doesn't exist in the array695 for (var key in prev_urls_arr) {696 if (prev_urls_arr.hasOwnProperty(key)) {697 if( typeof pag_url_arr[key] == 'undefined' ) pag_url_arr[key] = prev_urls_arr[key];698 }699 }700 }701702703 if( (pag_url == '' || pag_url == '{}') && item_sel == '.cff-item' ){704 $cffLoadMore.hide();705 cff_no_more_posts($cff, $cffLoadMore);706 } else {707 //Display loader708 $cffLoadMore.addClass('cff-loading').append('<div class="cff-loader"></div>');709 $cffLoadMore.find('.cff-loader').css('background-color', $cffLoadMore.css('color'));710 }711712713 //Loop through the pag array. Replace the until params for each id. Stringify to send in the ajax request714 for (var key in pag_url_arr) {715 if (pag_url_arr.hasOwnProperty(key)) {716717 var this_url = pag_url_arr[key],718 until_old = cffGetParameterByName('until', this_url);719720 var until_new = (parseInt( $cff.find(item_sel+'.cff-' + key).last().attr('data-cff-timestamp') ) - 1).toString();721722 //If there's no posts in the feed for a specific author then use the timestamp from the last post in the feed from any author723 if( isNaN(parseFloat(until_new)) ){724 until_new = (parseInt( $cff.find(item_sel).last().attr('data-cff-timestamp') ) - 1).toString();725 }726727 //If there were no posts added to the feed from the previous response then don't replace the until_old with the until_new in the next request728 if( $cffLoadMore.attr('data-cff-no-posts-added') == 'true' ){729 var new_url = this_url;730 } else {731 //Replace old until value with new one in the URL732 var new_url = this_url.replace("until="+until_old,"until="+until_new);733 }734735 //USE OFFSET PAGINATION METHOD736 if( cff_grid_pag == 'offset' ){737 if( item_sel == '.cff-album-item' ){738 //If it's an album item then remove the "after" param as it overrides the "until" param739 if( new_url.indexOf('&after=') > -1 ) new_url = new_url.replace("&after="+cffGetParameterByName('after', new_url),"");740741 //Add the offset param for pagination as time based doesn't work with albums due to the albums not always being in date order, and the other type of paging doesn't work due to filtering/higher post limits742 key = key.replace( /(:|\.|\[|\]|,|=)/g, "\\$1" );743 var albumItemCount = $cff.find('.cff-album-item.cff-' + key).length + $cff.find('.cff-empty-album.cff-' + key).length;744 if( new_url.indexOf('&offset=') > -1 ){745 new_url = new_url.replace("&offset="+cffGetParameterByName('offset', new_url), "&offset="+albumItemCount);746 } else {747 new_url = new_url + "&offset=" + albumItemCount;748 }749 key = key.replace(/\\/g, '');750751 }752 }753 //END USE OFFSET PAGINATION METHOD754755756 //If it's an events only URL then remove the "after" param as we're using the "until" value instead757 if( (this_url.indexOf('/events') > -1 && this_url.indexOf('&after=') > -1) || (this_url.indexOf('/ratings') > -1 && this_url.indexOf('&after=') > -1 && $cff.hasClass('cff-all-reviews') ) ){758 new_url = new_url.replace("&after="+cffGetParameterByName('after', new_url),"");759 }760761 //Remove the "__paging_token" parameter from the URL as it causes some posts to be missing and it isn't needed as we're using "until"762 if( new_url.indexOf('&__paging_token') > -1 ){763 new_url = new_url.replace("&__paging_token="+cffGetParameterByName('__paging_token', new_url),"");764 }765766 pag_url_arr[key] = new_url;767768 }769 }770771 //Convert the array back into a string772 pag_url = JSON.stringify( pag_url_arr );773774 jQuery.ajax({775 url : cffajaxurl,776 type : 'post',777 data : {778 action : 'cff_get_new_posts',779 shortcode_data : shortcodeData,780 pag_url : pag_url781 },782 success : function(data) {783784 //If there's no posts added to the feed then set a data attr on the button so that we can change the "until" value to get a new batch next time785 //Check by seeing if the data contains a div (ie. post)786 if( data.indexOf('<div class=') == -1 && data.indexOf('<span class=') == -1 ){787 $cffLoadMore.attr('data-cff-no-posts-added', 'true');788 } else {789 $cffLoadMore.attr('data-cff-no-posts-added', 'false');790 }791792 //Appends the html echoed out in cff_get_new_posts() to the last existing post element793 if( $cff.find('.cff-item, .cff-album-item').length ){794 $cff.find('.cff-item, .cff-album-item').removeClass('cff-new').last().after(data);795 } else {796 //If there's no posts yet then just add it into the posts container797 $cff.find('.cff-posts-wrap').append(data);798 }799800 //Replace any duplicate album items with empty items so doesn't affect offset pagination 801 $cff.find('.cff-album-item').each(function (i) {802 var $el = $('[id="' + this.id + '"]').eq(1);803 if($el.length){804 this_classes = $el.attr('class');805 this_classes = this_classes.replace("cff-album-item","");806 // $el.replaceWith('<span class="cff-empty-album '+this_classes+'"><span>');807 }808 });809810 //Remove loader811 $cffLoadMore.removeClass('cff-loading').find('.cff-loader').remove();812 //Re-add the ID so it can be clicked again813 $cffLoadMore.attr('id', 'cff-load-more').removeClass('cff-disabled');814815 //Rerun JS (only runs on new items - .cff-new)816 cff_init( $cff );817818 //Re-init masonry819 if( $cff.hasClass('cff-masonry') && !$cff.hasClass('cff-masonry-css') ){820821 $cff.masonry('appended', $cff.find('.cff-new'));822823 $cff.find('.cff-view-comments, .cff-comment-replies a, .cff-show-more-comments a').off().on('click', function() {824 setTimeout(function(){825 cffAddMasonry($cff);826 }, 500);827 });828829 }830831 //If there's no more API URLs to hit then hide the load more button832 var next_urls = $cff.find('.cff-pag-url').attr('data-cff-pag-url');833 if( item_sel == '.cff-item' || cff_grid_pag == 'cursor' ){834 if( next_urls == '{}' ) cff_no_more_posts($cff, $cffLoadMore);835 } else {836 if( data.indexOf('class="cff-album-item') < 0 && data.indexOf('class="cff-empty-album') < 0 ){837 cff_no_more_posts($cff, $cffLoadMore);838 }839 }840841 // Call Custom JS if it exists842 // if (typeof cff_custom_js == 'function') setTimeout(function(){ cff_custom_js(jQuery); }, 100);843 if (typeof cff_custom_js == 'function') cff_custom_js(jQuery);844845 }846 }); // ajax call847 }).hover(848 function() {849 $(this).css('background', $(this).attr('data-cff-hover') );850 }, function() {851 $(this).css('background', $(this).attr('data-cff-bg') );852 }853 );854855 function cff_no_more_posts($cff, $cffLoadMore){856 var no_more_posts_text = ( $cffLoadMore.attr('data-no-more') == '' ) ? 'No more posts' : $cffLoadMore.attr('data-no-more').replace(/\\'/g,"'");857 if( $cff.find('.cff-no-more-posts').length < 1 ) $cffLoadMore.hide().after('<p class="cff-no-more-posts">'+no_more_posts_text+'</p>');858 $cff.find('.cff-error-msg').remove();859 }860861 //Add container to the masonry posts so that the load more button can be displayed at the bottom outside of the CSS cols862 if( $(this).find('.cff-masonry-posts').length < 1 ) $(this).find('#cff.cff-masonry .cff-item, #cff.cff-masonry .cff-likebox, #cff.cff-masonry .cff-event, #cff.cff-masonry .cff-album-item').wrapAll('<div class="cff-masonry-posts" />');863864 //Remove the masonry css class if it's a grid feed865 if( $cff.find('.cff-album-item').length ){866 $cff.removeClass('cff-masonry cff-masonry-css');867 }868869 }); //End .cff-wrapper each()870871872873 //GET/CACHE COMMENTS874 //Check if the meta transient exists (set in head JS vars) and that a timeline feed exists on the page875 if(cffmetatrans != 'false' && $('.cff-timeline-feed').length ){876877 //If the comments data is cached then get it from the transient in the DB878 $.ajax({879 url: cffajaxurl,880 type: 'POST',881 async: true,882 cache: false,883 data:{884 action: 'get_meta'885 },886 success: function(data) {887888 //If there's no data then set the array to be empty so that it hits the API for the data889 if( data == '' || data.length < 1 ){890 metaArr = [];891 } else {892 //Decode the JSON to that it can be used again893 data = decodeURI(data);894895 //Replace any escaped single quotes as it results in invalid JSON896 data = data.replace(/\\'/g, "'");897898 //Convert the cached JSON string back to a JSON object899 metaArr = JSON.parse( data );900 }901902903 // $cff.find('.cff-item.cff-new').each(function(){904 $cff.each(function(){905 $(this).find('.cff-item.cff-new:not(.cff-event)').each(function(){906 var $self = $(this),907 post_id_orig = $self.find('.cff-view-comments').attr('id'),908 object_id = $self.closest('.cff-item').attr('data-object-id');909910 //If the post ID doesn't exist in the array then use the API to get the data911 if( metaArr.hasOwnProperty(post_id_orig) ){912 cffCreateComments($self, metaArr[post_id_orig]);913 cffAddFullsizeImageURLs($self, metaArr[post_id_orig]);914 } else {915 cffGetMetaAPI($self, post_id_orig, object_id);916 }917 918 });919 });920 921 },922 error: function(xhr,textStatus,e) {923 return; 924 }925926 });927928 } else {929930 $('#cff .cff-item.cff-new:not(.cff-event)').each(function(){931 var $self = $(this),932 post_id_orig = $self.find('.cff-view-comments').attr('id'),933 object_id = $self.closest('.cff-item').attr('data-object-id');934935 cffGetMetaAPI($self, post_id_orig, object_id);936 }); 937938 } //END GET/CACHE COMMENTS939940941 function cffGetMetaAPI($self, post_id_orig, object_id){942 943 if( typeof object_id == 'undefined' || object_id.length < 2 ) object_id = '';944945 var object_id_query = ''+object_id,946 post_id_query = '?post_id='+post_id_orig,947 use_id = 'object',948 post_comment_count = $self.find('.cff-comments .cff-count').text(),949 post_likes_count = $self.find('.cff-likes .cff-count').text();950951 if( typeof post_comment_count == 'undefined' || post_comment_count == '' ) post_comment_count = 0;952 if( typeof post_likes_count == 'undefined' || post_likes_count == '' ) post_likes_count = 0;953954 //If it's a video post or there's no object ID then use the post ID (video posts don't have "images" field)955 // if( typeof object_id == 'undefined' || object_id.length < 2 || $self.hasClass('cff-video-post') ) use_id = 'post';956 if( typeof object_id == 'undefined' || object_id.length < 2 || $self.find('.cff-comments-box').hasClass('cff-shared-story') || $self.hasClass('cff-timeline-event') ) use_id = 'post';957958 var timeline_event = '';959 if( $self.hasClass('cff-timeline-event') ) timeline_event = '&timeline_event=true';960961 var usegrouptoken = '';962 if( $self.closest('#cff').hasClass('cff-group') ) usegrouptoken = '&usegrouptoken=true';963964 //Is it a video post? If so, then we may be able to use the object ID to get the embeddable video object965 var cff_is_video_post = $self.hasClass('cff-video-post') ? '&isvideo=true' : '';966967 var url = cffsiteurl + "/custom-facebook-feed-pro/query.php?o_id=" + object_id + '&post_id='+post_id_orig + '&use_id=' + use_id + timeline_event + usegrouptoken + '&comments_num=' + post_comment_count + '&likes_num=' + post_likes_count + '&type=meta' + cff_is_video_post;968969 if( $self.hasClass('cff-album') ) url += '&timelinealbum=true';970971 //Get comments data from the API972 if( locatefile == true ){973 $.ajax({974 method: "GET",975 url: url,976 success: function(data) {977978 //Cache the comments by adding to the cache array979 metaArr[ post_id_orig ] = data;980 newMetaArr[ post_id_orig ] = data; //This is cached. Only the new comments.981982 //Add the comments HTML983 cffCreateComments($self, data);984985 //Replace images URLs with full size ones986 cffAddFullsizeImageURLs($self, data);987988 //Set the cache989 cffSetMetaCache(newMetaArr);990 991 }//End ajax success992993 });994 }995 }996997 //Only allow this function to run once every time new posts are loaded so that a load of ajax requests aren't all fired off at once. It's called once and then runs 3 times in total to cache all comments on the page into the cff_meta transient.998 var cffSetMetaCache_executed = false;999 function cffSetMetaCache(newMetaArr){10001001 if( !cffSetMetaCache_executed ){10021003 //Cache the comments data1004 var cffTimesCached = 0,1005 cffCacheDelay = setTimeout(function() {1006 //Try to cache it multiple times so that if the comments data isn't finished returning the first time then the subsequent attempts gets it1007 var cffCacheInterval = setInterval(function(){1008 1009 cffCacheMeta(newMetaArr);10101011 cffTimesCached++;1012 if(cffTimesCached == 2) clearInterval(cffCacheInterval);1013 }, 3000);10141015 //Send the data to DB initially via ajax after a 0.5 second delay1016 cffCacheMeta(newMetaArr);1017 }, 500);10181019 cffSetMetaCache_executed = true;10201021 } // End cffRunFunction check102210231024 //Cache the likes and comments counts by sending an array via ajax to the main plugin file which then stores it in a transient1025 function cffCacheMeta(newMetaArr){10261027 //Convert the JSON object to a string1028 var jsonstring = JSON.stringify( newMetaArr );10291030 //Encode the JSON string so that it can be stored in the database1031 jsonstring = encodeURI(jsonstring);10321033 //Cache the data1034 var opts = {1035 url: cffajaxurl,1036 type: 'POST',1037 async: true,1038 cache: false,1039 data:{1040 action: 'cache_meta',1041 metadata: jsonstring // Passes array of meta data to WP to cache1042 },1043 success: function(response) {1044 return; 1045 },1046 error: function(xhr,textStatus,e) {1047 return; 1048 }1049 };1050 $.ajax(opts);1051 1052 } // End cffCacheMeta105310541055 }10561057 function cffGetParameterByName(name, url) {1058 name = name.replace(/[\[\]]/g, "\\$&");1059 var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),1060 results = regex.exec(url);1061 if (!results) return null;1062 if (!results[2]) return '';1063 return decodeURIComponent(results[2].replace(/\+/g, " "));1064 }10651066 function cffLinkify(inputText) {1067 var replacedText, replacePattern1, replacePattern2, replacePattern3;10681069 //URLs starting with http://, https://, or ftp://1070 replacePattern1 = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;1071 replacedText = inputText.replace(replacePattern1, '<a href="$1" target="_blank">$1</a>');10721073 //URLs starting with "www." (without // before it, or it'd re-link the ones done above).1074 replacePattern2 = /(^|[^\/])(www\.[\S]+(\b|$))/gim;1075 replacedText = replacedText.replace(replacePattern2, '$1<a href="http://$2" target="_blank">$2</a>');10761077 //Change email addresses to mailto:: links.1078 replacePattern3 = /(([a-zA-Z0-9\-\_\.])+@[a-zA-Z\_]+?(\.[a-zA-Z]{2,6})+)/gim;1079 replacedText = replacedText.replace(replacePattern3, '<a href="mailto:$1">$1</a>');10801081 return replacedText;1082 }108310841085 //HTML5 Video play button1086 $(document).off('click', '#cff .cff-html5-video .cff-html5-play').on('click', '#cff .cff-html5-video .cff-html5-play', function(e){1087 e.preventDefault();10881089 var $self = $(this),1090 $videoWrapper = $self.closest('.cff-html5-video'),1091 video = $self.siblings('video')[0];1092 video.play();1093 $self.hide();1094 $self.siblings('.cff-poster').hide();10951096 //Show controls when the play button is clicked1097 if (video.hasAttribute("controls")) {1098 video.removeAttribute("controls") 1099 } else {1100 video.setAttribute("controls","controls") 1101 }11021103 if($videoWrapper.innerWidth() < 150 && !$videoWrapper.hasClass('cff-no-video-expand')) {1104 $videoWrapper.css('width','100%').closest('.cff-item').find('.cff-text-wrapper').css('width','100%');1105 }1106 });110711081109 //Replace the lightbox image with the full size image which is retrieved in the meta API request1110 function cffAddFullsizeImageURLs($self, data){1111 var data = jQuery.parseJSON( data );11121113 if( typeof data.images !== 'undefined' ) $self.find('.cff-lightbox-link').attr('href', data.images[0].source); 1114 }111511161117 //Create comments1118 function cffCreateComments($self, data){11191120 if (data.substring(0, 1) == "<") return false;11211122 //Convert string of data received from comments.php to a JSON object1123 var data = jQuery.parseJSON( data ),1124 cff_comments = '',1125 cff_likes_this = '',1126 commentShow = parseInt( $self.find('.cff-comments-box').attr('data-num') ),1127 like_count = ( typeof data.likes !== 'undefined' ) ? data.likes.summary.total_count : 01128 $cffCommentsBox = $self.find('.cff-comments-box'),1129 $cffCommentLikes = $cffCommentsBox.find('.cff-comment-likes'),1130 cff_hide_comment_avatars = Boolean($self.find('.cff-comments-box').attr('data-cff-hide-avatars')),1131 cff_expand_comments = Boolean($self.find('.cff-comments-box').attr('data-cff-expand-comments')),1132 cff_translate_like_this_text = $cffCommentsBox.attr('data-cff-like-text'),1133 cff_translate_likes_this_text = $cffCommentsBox.attr('data-cff-likes-text'),1134 cff_translate_reacted_to_this_text = $cffCommentsBox.attr('data-cff-reacted-text'),1135 cff_translate_and_text = $cffCommentsBox.attr('data-cff-and-text'),1136 cff_translate_other_text = $cffCommentsBox.attr('data-cff-other-text'),1137 cff_translate_others_text = $cffCommentsBox.attr('data-cff-others-text'),1138 cff_translate_reply_text = $cffCommentsBox.attr('data-cff-reply-text'),1139 cff_translate_replies_text = $cffCommentsBox.attr('data-cff-replies-text'),1140 cff_total_comments_count = ( typeof data.comments !== 'undefined' ) ? data.comments.summary.total_count : 0,1141 cff_meta_link_color = $self.find('.cff-comments-box').attr('data-cff-meta-link-color'),1142 cff_post_tags = Boolean( $self.find('.cff-comments-box').attr('data-cff-post-tags') );11431144 //ADD REACTIONS1145 var cff_haha_count = ( typeof data.haha !== 'undefined' ) ? data.haha.summary.total_count : 0;1146 var cff_love_count = ( typeof data.love !== 'undefined' ) ? data.love.summary.total_count : 0;1147 var cff_wow_count = ( typeof data.wow !== 'undefined' ) ? data.wow.summary.total_count : 0;1148 var cff_sad_count = ( typeof data.sad !== 'undefined' ) ? data.sad.summary.total_count : 0;1149 var cff_angry_count = ( typeof data.angry !== 'undefined' ) ? data.angry.summary.total_count : 0;11501151 var reactions_arr = [cff_haha_count, cff_love_count, cff_wow_count, cff_sad_count, cff_angry_count];1152 var reaction_first_num = reactions_arr.sort(sortNumber)[0];1153 var reaction_second_num = reactions_arr.sort(sortNumber)[1];11541155 //Sort array highest to lowest1156 function sortNumber(a,b) {1157 return b - a;1158 }11591160 var reactions_html = '',1161 love_added = false,1162 haha_added = false,1163 wow_added = false,1164 sad_added = false,1165 angry_added = false;11661167 //Add first reaction1168 var reaction_one_html = '';1169 if( reaction_first_num > 0 ){1170 if(data.love.summary.total_count == reaction_first_num){1171 reaction_one_html += '<span class="cff-love cff-reaction-one"></span>';1172 love_added = true;1173 }1174 if(data.haha.summary.total_count == reaction_first_num){1175 reaction_one_html += '<span class="cff-haha cff-reaction-one"></span>';1176 haha_added = true;1177 }1178 if(data.wow.summary.total_count == reaction_first_num){1179 reaction_one_html += '<span class="cff-wow cff-reaction-one"></span>';1180 wow_added = true;1181 }1182 if(data.sad.summary.total_count == reaction_first_num){1183 reaction_one_html += '<span class="cff-sad cff-reaction-one"></span>';1184 sad_added = true;1185 }1186 if(data.angry.summary.total_count == reaction_first_num){1187 reaction_one_html += '<span class="cff-angry cff-reaction-one"></span>';1188 angry_added = true;1189 }1190 reactions_html += reaction_one_html;1191 }11921193 //If reaction one doesn't already contain two reactions (eg: if the two reaction_ones are the same number) then don't include a reaction_two1194 if( reaction_one_html.split('cff-reaction-one').length < 3 ){1195 //Add second reaction1196 if( reaction_second_num > 0 ){1197 var reaction_two_html = '';11981199 if(data.love.summary.total_count == reaction_second_num && !love_added){1200 reaction_two_html = '<span class="cff-love cff-reaction-two"></span>';1201 }1202 if(data.haha.summary.total_count == reaction_second_num && !haha_added){1203 reaction_two_html = '<span class="cff-haha cff-reaction-two"></span>';1204 }1205 if(data.wow.summary.total_count == reaction_second_num && !wow_added){1206 reaction_two_html = '<span class="cff-wow cff-reaction-two"></span>';1207 }1208 if(data.sad.summary.total_count == reaction_second_num && !sad_added){1209 reaction_two_html = '<span class="cff-sad cff-reaction-two"></span>';1210 }1211 if(data.angry.summary.total_count == reaction_second_num && !angry_added){1212 reaction_two_html = '<span class="cff-angry cff-reaction-two"></span>';1213 }1214 reactions_html += reaction_two_html;1215 }1216 }12171218 $self.find('.cff-meta .cff-likes .cff-icon').after( reactions_html );12191220 //If there's no likes but there's a reacton then don't show the like icon - show the reaction icon instead1221 if( parseInt(like_count) == 0 && ( parseInt(cff_love_count) > 0 || parseInt(cff_haha_count) > 0 || parseInt(cff_wow_count) > 0 || parseInt(cff_sad_count) > 0 || parseInt(cff_angry_count) > 0 ) ){1222 $self.find('.cff-meta .cff-likes .cff-icon').remove();1223 $self.find('.cff-meta .cff-likes span').addClass('cff-no-animate');1224 }12251226 //Add reactions to like count1227 var cff_reactions_count = parseInt(like_count) + parseInt(cff_love_count) + parseInt(cff_haha_count) + parseInt(cff_wow_count) + parseInt(cff_sad_count) + parseInt(cff_angry_count);1228 if( cff_reactions_count > 0 ) $self.find('.cff-meta .cff-likes .cff-count').text( cff_reactions_count );122912301231 //ADDS REACTIONS TO COMMENTS BOX1232 var cff_no_reactions = false;1233 if( cff_love_count == 0 && cff_haha_count == 0 && cff_wow_count == 0 && cff_sad_count == 0 && cff_angry_count == 0 ) cff_no_reactions = true;12341235 var reactions_count_html = '<span class="cff-reactions-count">';12361237 if( parseInt(like_count) > 0){1238 reactions_count_html += '<span class="cff-like"></span>';12391240 if( !cff_no_reactions ){1241 if( parseInt(like_count) > 0 ) reactions_count_html += '<span class="cff-like-count">'+like_count+'</span>';1242 if( cff_love_count > 0 ) reactions_count_html += '<span class="cff-love"></span><span class="cff-love-count">'+cff_love_count+'</span>';1243 if( cff_haha_count > 0 ) reactions_count_html += '<span class="cff-haha"></span><span class="cff-haha-count">'+cff_haha_count+'</span>';1244 if( cff_wow_count > 0 ) reactions_count_html += '<span class="cff-wow"></span><span class="cff-wow-count">'+cff_wow_count+'</span>';1245 if( cff_sad_count > 0 ) reactions_count_html += '<span class="cff-sad"></span><span class="cff-sad-count">'+cff_sad_count+'</span>';1246 if( cff_angry_count > 0 ) reactions_count_html += '<span class="cff-angry"></span><span class="cff-angry-count">'+cff_angry_count+'</span>';1247 }1248 }1249 reactions_count_html += '</span>';12501251 //CREATE LIKES PART AT TOP OF COMMENTS BOX1252 if( typeof data.likes !== 'undefined' ){1253 if( data.likes.data.length ){12541255 cff_likes_this += '<span class="cff-likes-this-text">';12561257 var liker_one = '',1258 liker_two = '';1259 if ( like_count > 0 && typeof data.likes.data[0] !== 'undefined' ) liker_one = '<a href="https://facebook.com/'+data.likes.data[0].id+'" style="color:'+cff_meta_link_color+';';1260 if (cff_no_reactions) liker_one += ' margin-left: 5px';1261 liker_one += '" target="_blank">'+data.likes.data[0].name+'</a>';12621263 if ( like_count > 1 && typeof data.likes.data[1] !== 'undefined' ) liker_two = '<a href="https://facebook.com/'+data.likes.data[1].id+'" style="color:'+cff_meta_link_color+'" target="_blank">'+data.likes.data[1].name+'</a>';12641265 if (like_count == 1){1266 cff_likes_this += liker_one+' '+cff_translate_likes_this_text;1267 } else if (like_count == 2){1268 cff_likes_this += liker_one+' '+cff_translate_and_text+' '+liker_two+' '+cff_translate_like_this_text;1269 } else if (like_count == 3){1270 cff_likes_this += liker_one+', '+liker_two+' '+cff_translate_and_text+' 1 '+cff_translate_other_text+' '+cff_translate_like_this_text;1271 } else {1272 cff_likes_this += liker_one+', '+liker_two+' '+cff_translate_and_text+' ';1273 if (like_count == 25) cff_likes_this += '<span class="cff-comment-likes-count">';1274 cff_likes_this += parseInt(cff_reactions_count)-2;1275 if (like_count == 25) cff_likes_this += '</span>';1276 cff_likes_this += ' '+cff_translate_others_text;12771278 if( parseInt(cff_reactions_count) == parseInt(like_count) ){1279 cff_likes_this += ' '+cff_translate_like_this_text;1280 } else {1281 cff_likes_this += ' '+cff_translate_reacted_to_this_text;1282 }12831284 }12851286 cff_likes_this += '</span>';12871288 $cffCommentLikes.append(reactions_count_html + cff_likes_this);12891290 } else {1291 //If there's no likes data then hide the top of the comments box that shows the "likes this" section1292 $cffCommentLikes.hide();1293 //Change this so that it also shows this section if there's a reaction and says "__ reacted to this"1294 }12951296 }129712981299 if( typeof data.comments !== 'undefined' ){1300 $.each(data.comments.data, function(i, commentItem) {13011302 var comment_message = cffLinkify(commentItem.message);13031304 cff_comments += '<div class="cff-comment" id="cff_'+commentItem.id+'" data-id="'+commentItem.from.id+'"';1305 cff_comments += ' style="';1306 ( i >= commentShow ) ? cff_comments += 'display: none;' : cff_comments += 'display: block;';1307 cff_comments += $self.find('#cff_'+commentItem.id).attr('style');1308 cff_comments += '">';1309 cff_comments += '<div class="cff-comment-text-wrapper">';1310 cff_comments += '<div class="cff-comment-text';1311 if( cff_hide_comment_avatars ) cff_comments += ' cff-no-image';1312 cff_comments += '"><p><a href="https://facebook.com/'+commentItem.from.id+'" class="cff-name" target="_blank" style="color:' + cff_meta_link_color + '">'+commentItem.from.name+'</a>';13131314 //MESSAGE TAGS1315 if( cff_post_tags && commentItem.hasOwnProperty('message_tags') ){13161317 //Loop through the tags and use the name to replace them1318 $.each(commentItem.message_tags, function(i, message_tag) {1319 tag_name = message_tag.name;1320 tag_link = '<a href="http://facebook.com/'+message_tag.id+'" target="_blank" style="color:'+cff_meta_link_color+'">'+message_tag.name+'</a>';13211322 comment_message = comment_message.replace(tag_name, tag_link);1323 });13241325 } //END MESSAGE TAGS13261327 cff_comments += comment_message+'</p>';1328132913301331 //Add image attachment if exists1332 if( commentItem.hasOwnProperty('attachment') ){1333 if( commentItem.attachment.hasOwnProperty('media') ){1334 cff_comments += '<a class="cff-comment-attachment" href="https://facebook.com/'+commentItem.id+'" target="_blank"><img src="'+commentItem.attachment.media.image.src+'" alt="';1335 if( commentItem.attachment.hasOwnProperty('title') ){1336 cff_comments += commentItem.attachment.title;1337 } else {1338 cff_comments += 'Attachment';1339 }1340 cff_comments += '" /></a>';1341 }1342 }13431344 cff_comments += '<span class="cff-time">';1345 var cff_middot = '',1346 cff_comment_time = $self.find('#cff_'+commentItem.id).attr('data-cff-comment-date');1347 //If the time is undefined then don't show it1348 if( typeof cff_comment_time !== 'undefined' ){1349 cff_comments += cff_comment_time;1350 cff_middot = '&nbsp; &middot; &nbsp;';1351 }1352 if ( commentItem.like_count > 0 ) cff_comments += '<span class="cff-comment-likes">'+cff_middot+'<b></b>'+commentItem.like_count+'</span>';1353 cff_comments += '</span>';13541355 //Comment replies1356 var cff_comment_count = parseInt(commentItem.comment_count);1357 if( cff_comment_count > 0 ){1358 //Get this from a data attr on the comments box container1359 var cff_replies_text_string = '';1360 (cff_comment_count == 1) ? cff_replies_text_string = cff_translate_reply_text : cff_replies_text_string = cff_translate_replies_text;1361 cff_comments += '<p class="cff-comment-replies" data-id="'+commentItem.id+'"><a class="cff-comment-replies-a" href="javascript:void(0);" style="color:' + cff_meta_link_color + '"><span class="cff-replies-icon"></span>'+cff_comment_count+' '+cff_replies_text_string+'</a></p><div class="cff-comment-replies-box cff-empty"></div>';1362 }13631364 cff_comments += '</div>'; //End .cff-comment-text1365 cff_comments += '</div>'; //End .cff-comment-text-wrapper13661367 //Only load the comment avatars if they're being displayed initially, otherwise load via JS on click to save all the HTTP requests on page load1368 if( !cff_hide_comment_avatars ){1369 cff_comments += '<div class="cff-comment-img"><a href="https://facebook.com/'+commentItem.from.id+'" target="_blank">';1370 if( cff_expand_comments && (i < commentShow) ) {1371 cff_comments += '<img src="https://graph.facebook.com/'+commentItem.from.id+'/picture" width=32 height=32 alt="'+commentItem.from.name+'">';1372 } else {1373 cff_comments += '<span class="cff-comment-avatar"></span>';1374 }1375 cff_comments += '</a></div>';1376 }13771378 cff_comments += '</div>'; //End .cff-comment13791380 }); //End loop1381 }13821383 //Add the comments to the page1384 $self.find('.cff-comments-wrap').html( cff_comments );1385 $self.find('.cff-show-more-comments').attr('data-cff-comments-total', cff_total_comments_count);13861387 setTimeout(function(){1388 if( $self.closest('.cff').hasClass('cff-masonry') && !$self.closest('.cff').hasClass('cff-masonry-css') ) cffAddMasonry( $self.closest('.cff') );1389 }, 200);13901391 }13921393 })(jQuery);13941395139613971398 /*!1399 imgLiquid v0.9.944 / 03-05-20131400 https://github.com/karacas/imgLiquid1401 */14021403 var imgLiquid = imgLiquid || {VER: '0.9.944'};1404 imgLiquid.bgs_Available = false;1405 imgLiquid.bgs_CheckRunned = false;1406 //Add the CSS using CSS as then it's only used when the JS file runs, otherwise with Ajax themes it's hiding the images but then the JS isn't running. This way still allows the images to display even if the JS doesn't run.1407 jQuery('.cff-new .cff-album-cover img, .cff-new .cff-crop img').css('visibility', 'hidden');1408 jQuery('#cff .cff-img-attachments .cff-crop img').css('opacity', 0);140914101411 (function ($) {14121413 // ___________________________________________________________________14141415 function checkBgsIsavailable() {1416 if (imgLiquid.bgs_CheckRunned) return;1417 else imgLiquid.bgs_CheckRunned = true;14181419 var spanBgs = $('<span style="background-size:cover" />');1420 $('body').append(spanBgs);14211422 !function () {1423 var bgs_Check = spanBgs[0];1424 if (!bgs_Check || !window.getComputedStyle) return;1425 var compStyle = window.getComputedStyle(bgs_Check, null);1426 if (!compStyle || !compStyle.backgroundSize) return;1427 imgLiquid.bgs_Available = (compStyle.backgroundSize === 'cover');1428 }();14291430 spanBgs.remove();1431 }143214331434 // ___________________________________________________________________14351436 $.fn.extend({1437 imgLiquid: function (options) {14381439 this.defaults = {1440 fill: true,1441 verticalAlign: 'center', // 'top' // 'bottom' // '50%' // '10%'1442 horizontalAlign: 'center', // 'left' // 'right' // '50%' // '10%'1443 useBackgroundSize: true,1444 useDataHtmlAttr: true,14451446 responsive: true, /* Only for use with BackgroundSize false (or old browsers) */1447 delay: 0, /* Only for use with BackgroundSize false (or old browsers) */1448 fadeInTime: 0, /* Only for use with BackgroundSize false (or old browsers) */1449 removeBoxBackground: true, /* Only for use with BackgroundSize false (or old browsers) */1450 hardPixels: true, /* Only for use with BackgroundSize false (or old browsers) */1451 responsiveCheckTime: 500, /* Only for use with BackgroundSize false (or old browsers) */ /* time to check div resize */1452 timecheckvisibility: 500, /* Only for use with BackgroundSize false (or old browsers) */ /* time to recheck if visible/loaded */14531454 // CALLBACKS1455 onStart: null, // no-params1456 onFinish: null, // no-params1457 onItemStart: null, // params: (index, container, img )1458 onItemFinish: null, // params: (index, container, img )1459 onItemError: null // params: (index, container, img )1460 };146114621463 checkBgsIsavailable();1464 var imgLiquidRoot = this;14651466 // Extend global settings1467 this.options = options;1468 this.settings = $.extend({}, this.defaults, this.options);14691470 // CallBack1471 if (this.settings.onStart) this.settings.onStart();147214731474 // ___________________________________________________________________14751476 return this.each(function ($i) {14771478 // MAIN >> each for image14791480 var settings = imgLiquidRoot.settings,1481 $imgBoxCont = $(this),1482 $img = $('img:first',$imgBoxCont);1483 if (!$img.length) {onError(); return;}148414851486 // Extend settings1487 if (!$img.data('imgLiquid_settings')) {1488 // First time1489 settings = $.extend({}, imgLiquidRoot.settings, getSettingsOverwrite());1490 } else {1491 // Recall1492 // Remove Classes1493 $imgBoxCont.removeClass('imgLiquid_error').removeClass('imgLiquid_ready');1494 settings = $.extend({}, $img.data('imgLiquid_settings'), imgLiquidRoot.options);1495 }1496 $img.data('imgLiquid_settings', settings);149714981499 // Start CallBack1500 if (settings.onItemStart) settings.onItemStart($i, $imgBoxCont, $img); /* << CallBack */150115021503 // Process1504 if (imgLiquid.bgs_Available && settings.useBackgroundSize)1505 processBgSize();1506 else1507 processOldMethod();150815091510 // END MAIN <<15111512 // ___________________________________________________________________15131514 function processBgSize() {15151516 // Check change img src1517 if ($imgBoxCont.css('background-image').indexOf(encodeURI($img.attr('src'))) === -1) {1518 // Change1519 $imgBoxCont.css({'background-image': 'url("' + encodeURI($img.attr('src')) + '")'});1520 }15211522 $imgBoxCont.css({1523 'background-size': (settings.fill) ? 'cover' : 'contain',1524 'background-position': (settings.horizontalAlign + ' ' + settings.verticalAlign).toLowerCase(),1525 'background-repeat': 'no-repeat'1526 });15271528 $('a:first', $imgBoxCont).css({1529 'display': 'block',1530 'width': '100%',1531 'height': '100%'1532 });15331534 $('img', $imgBoxCont).css({'display': 'none'});15351536 if (settings.onItemFinish) settings.onItemFinish($i, $imgBoxCont, $img); /* << CallBack */15371538 $imgBoxCont.addClass('imgLiquid_bgSize');1539 $imgBoxCont.addClass('imgLiquid_ready');1540 checkFinish();1541 }15421543 // ___________________________________________________________________15441545 function processOldMethod() {15461547 // Check change img src1548 if ($img.data('oldSrc') && $img.data('oldSrc') !== $img.attr('src')) {15491550 /* Clone & Reset img */1551 var $imgCopy = $img.clone().removeAttr('style');1552 $imgCopy.data('imgLiquid_settings', $img.data('imgLiquid_settings'));1553 $img.parent().prepend($imgCopy);1554 $img.remove();1555 $img = $imgCopy;1556 $img[0].width = 0;15571558 // Bug ie with > if (!$img[0].complete && $img[0].width) onError();1559 setTimeout(processOldMethod, 10);1560 return;1561 }156215631564 // Reproceess?1565 if ($img.data('imgLiquid_oldProcessed')) {1566 makeOldProcess(); return;1567 }156815691570 // Set data1571 $img.data('imgLiquid_oldProcessed', false);1572 $img.data('oldSrc', $img.attr('src'));157315741575 // Hide others images1576 $('img:not(:first)', $imgBoxCont).css('display', 'none');157715781579 // CSSs1580 $imgBoxCont.css({'overflow': 'hidden'});1581 $img.fadeTo(0, 0).removeAttr('width').removeAttr('height').css({1582 'visibility': 'visible',1583 'max-width': 'none',1584 'max-height': 'none',1585 'width': 'auto',1586 'height': 'auto',1587 'display': 'block'1588 });158915901591 // CheckErrors1592 $img.on('error', onError);1593 $img[0].onerror = onError;159415951596 // loop until load1597 function onLoad() {1598 if ($img.data('imgLiquid_error') || $img.data('imgLiquid_loaded') || $img.data('imgLiquid_oldProcessed')) return;1599 if ($imgBoxCont.is(':visible') && $img[0].complete && $img[0].width > 0 && $img[0].height > 0) {1600 $img.data('imgLiquid_loaded', true);1601 setTimeout(makeOldProcess, $i * settings.delay);1602 } else {1603 setTimeout(onLoad, settings.timecheckvisibility);1604 }1605 }160616071608 onLoad();1609 checkResponsive();1610 }16111612 // ___________________________________________________________________16131614 function checkResponsive() {16151616 /* Only for oldProcessed method (background-size dont need) */16171618 if (!settings.responsive && !$img.data('imgLiquid_oldProcessed')) return;1619 if (!$img.data('imgLiquid_settings')) return;16201621 settings = $img.data('imgLiquid_settings');16221623 $imgBoxCont.actualSize = $imgBoxCont.get(0).offsetWidth + ($imgBoxCont.get(0).offsetHeight / 10000);1624 if ($imgBoxCont.sizeOld && $imgBoxCont.actualSize !== $imgBoxCont.sizeOld) makeOldProcess();16251626 $imgBoxCont.sizeOld = $imgBoxCont.actualSize;1627 setTimeout(checkResponsive, settings.responsiveCheckTime);1628 }16291630 // ___________________________________________________________________16311632 function onError() {1633 $img.data('imgLiquid_error', true);1634 $imgBoxCont.addClass('imgLiquid_error');1635 if (settings.onItemError) settings.onItemError($i, $imgBoxCont, $img); /* << CallBack */1636 checkFinish();1637 }16381639 // ___________________________________________________________________16401641 function getSettingsOverwrite() {1642 var SettingsOverwrite = {};16431644 if (imgLiquidRoot.settings.useDataHtmlAttr) {1645 var dif = $imgBoxCont.attr('data-imgLiquid-fill'),1646 ha = $imgBoxCont.attr('data-imgLiquid-horizontalAlign'),1647 va = $imgBoxCont.attr('data-imgLiquid-verticalAlign');16481649 if (dif === 'true' || dif === 'false') SettingsOverwrite.fill = Boolean (dif === 'true');1650 if (ha !== undefined && (ha === 'left' || ha === 'center' || ha === 'right' || ha.indexOf('%') !== -1)) SettingsOverwrite.horizontalAlign = ha;1651 if (va !== undefined && (va === 'top' || va === 'bottom' || va === 'center' || va.indexOf('%') !== -1)) SettingsOverwrite.verticalAlign = va;1652 }16531654 if (imgLiquid.isIE && imgLiquidRoot.settings.ieFadeInDisabled) SettingsOverwrite.fadeInTime = 0; //ie no anims1655 return SettingsOverwrite;1656 }16571658 // ___________________________________________________________________16591660 function makeOldProcess() { /* Only for old browsers, or useBackgroundSize seted false */16611662 // Calculate size1663 var w, h, wn, hn, ha, va, hdif, vdif,1664 margT = 0,1665 margL = 0,1666 $imgCW = $imgBoxCont.width(),1667 $imgCH = $imgBoxCont.height();166816691670 // Save original sizes1671 if ($img.data('owidth') === undefined) $img.data('owidth', $img[0].width);1672 if ($img.data('oheight') === undefined) $img.data('oheight', $img[0].height);167316741675 // Compare ratio1676 if (settings.fill === ($imgCW / $imgCH) >= ($img.data('owidth') / $img.data('oheight'))) {1677 w = '100%';1678 h = 'auto';1679 wn = Math.floor($imgCW);1680 hn = Math.floor($imgCW * ($img.data('oheight') / $img.data('owidth')));1681 } else {1682 w = 'auto';1683 h = '100%';1684 wn = Math.floor($imgCH * ($img.data('owidth') / $img.data('oheight')));1685 hn = Math.floor($imgCH);1686 }16871688 // Align X1689 ha = settings.horizontalAlign.toLowerCase();1690 hdif = $imgCW - wn;1691 if (ha === 'left') margL = 0;1692 if (ha === 'center') margL = hdif * 0.5;1693 if (ha === 'right') margL = hdif;1694 if (ha.indexOf('%') !== -1){1695 ha = parseInt (ha.replace('%',''), 10);1696 if (ha > 0) margL = hdif * ha * 0.01;1697 }169816991700 // Align Y1701 va = settings.verticalAlign.toLowerCase();1702 vdif = $imgCH - hn;1703 if (va === 'left') margT = 0;1704 if (va === 'center') margT = vdif * 0.5;1705 if (va === 'bottom') margT = vdif;1706 if (va.indexOf('%') !== -1){1707 va = parseInt (va.replace('%',''), 10);1708 if (va > 0) margT = vdif * va * 0.01;1709 }171017111712 // Add Css1713 if (settings.hardPixels) {w = wn; h = hn;}1714 $img.css({1715 'width': w,1716 'height': h,1717 'margin-left': Math.floor(margL),1718 'margin-top': Math.floor(margT)1719 });172017211722 // FadeIn > Only first time1723 if (!$img.data('imgLiquid_oldProcessed')) {1724 $img.fadeTo(settings.fadeInTime, 1);1725 $img.data('imgLiquid_oldProcessed', true);1726 if (settings.removeBoxBackground) $imgBoxCont.css('background-image', 'none');1727 $imgBoxCont.addClass('imgLiquid_nobgSize');1728 $imgBoxCont.addClass('imgLiquid_ready');1729 }173017311732 if (settings.onItemFinish) settings.onItemFinish($i, $imgBoxCont, $img); /* << CallBack */1733 checkFinish();1734 }17351736 // ___________________________________________________________________17371738 function checkFinish() { /* Check callBack */1739 if ($i === imgLiquidRoot.length - 1) if (imgLiquidRoot.settings.onFinish) imgLiquidRoot.settings.onFinish();1740 }174117421743 });1744 }1745 });1746 })(jQuery);174717481749 // Inject css styles ______________________________________________________1750 !function () {1751 var css = imgLiquid.injectCss,1752 head = document.getElementsByTagName('head')[0],1753 style = document.createElement('style');1754 style.type = 'text/css';1755 if (style.styleSheet) {1756 style.styleSheet.cssText = css;1757 } else {1758 style.appendChild(document.createTextNode(css));1759 }1760 head.appendChild(style);1761 }();1762 jQuery(".cff-new .cff-album-cover, .cff-new .cff-crop").imgLiquid({fill:true});176317641765} //********* END cff_init() FUNCTION ************//1766cff_init();1767176817691770177117721773 // Used for linking text in captions1774 /* JavaScript Linkify - v0.3 - 6/27/2009 - http://benalman.com/projects/javascript-linkify/ */1775 window.cffLinkify=(function(){var k="[a-z\\d.-]+://",h="(?:(?:[0-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(?:[0-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])",c="(?:(?:[^\\s!@#$%^&*()_=+[\\]{}\\\\|;:'\",.<>/?]+)\\.)+",n="(?:ac|ad|aero|ae|af|ag|ai|al|am|an|ao|aq|arpa|ar|asia|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|biz|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|cat|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|coop|com|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|info|int|in|io|iq|ir|is|it|je|jm|jobs|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mil|mk|ml|mm|mn|mobi|mo|mp|mq|mr|ms|mt|museum|mu|mv|mw|mx|my|mz|name|na|nc|net|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pro|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tel|tf|tg|th|tj|tk|tl|tm|tn|to|tp|travel|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xn--0zwm56d|xn--11b5bs3a9aj6g|xn--80akhbyknj4f|xn--9t4b11yi5a|xn--deba0ad|xn--g6w251d|xn--hgbk6aj7f53bba|xn--hlcj6aya9esc7a|xn--jxalpdlp|xn--kgbechtv|xn--zckzah|ye|yt|yu|za|zm|zw)",f="(?:"+c+n+"|"+h+")",o="(?:[;/][^#?<>\\s]*)?",e="(?:\\?[^#<>\\s]*)?(?:#[^<>\\s]*)?",d="\\b"+k+"[^<>\\s]+",a="\\b"+f+o+e+"(?!\\w)",m="mailto:",j="(?:"+m+")?[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@"+f+e+"(?!\\w)",l=new RegExp("(?:"+d+"|"+a+"|"+j+")","ig"),g=new RegExp("^"+k,"i"),b={"'":"`",">":"<",")":"(","]":"[","}":"{","B;":"B+","b:":"b9"},i={callback:function(q,p){return p?'<a href="'+p+'" title="'+p+'" target="_blank">'+q+"</a>":q},punct_regexp:/(?:[!?.,:;'"]|(?:&|&amp;)(?:lt|gt|quot|apos|raquo|laquo|rsaquo|lsaquo);)$/};return function(u,z){z=z||{};var w,v,A,p,x="",t=[],s,E,C,y,q,D,B,r;for(v in i){if(z[v]===undefined){z[v]=i[v]}}while(w=l.exec(u)){A=w[0];E=l.lastIndex;C=E-A.length;if(/[\/:]/.test(u.charAt(C-1))){continue}do{y=A;r=A.substr(-1);B=b[r];if(B){q=A.match(new RegExp("\\"+B+"(?!$)","g"));D=A.match(new RegExp("\\"+r,"g"));if((q?q.length:0)<(D?D.length:0)){A=A.substr(0,A.length-1);E--}}if(z.punct_regexp){A=A.replace(z.punct_regexp,function(F){E-=F.length;return""})}}while(A.length&&A!==y);p=A;if(!g.test(p)){p=(p.indexOf("@")!==-1?(!p.indexOf(m)?"":m):!p.indexOf("irc.")?"irc://":!p.indexOf("ftp.")?"ftp://":"http://")+p}if(s!=C){t.push([u.slice(s,C)]);s=E}t.push([A,p])}t.push([u.substr(s)]);for(v=0;v<t.length;v++){x+=z.callback.apply(window,t[v])}return x||u}})();17761777 //Link #hashtags1778 function cffReplaceHashtags(hash){1779 //Remove white space at beginning of hash1780 var replacementString = jQuery.trim(hash);1781 //If the hash is a hex code then don't replace it with a link as it's likely in the style attr, eg: "color: #ff0000"1782 if ( /^#[0-9A-F]{6}$/i.test( replacementString ) ){1783 return replacementString;1784 } else {1785 return '<a href="https://www.facebook.com/hashtag/'+ replacementString.substring(1) +'" target="_blank" rel="nofollow">' + replacementString + '</a>';1786 }1787 }1788 //Link @tags1789 function cffReplaceTags(tag){1790 var replacementString = jQuery.trim(tag);1791 return '<a href="https://www.facebook.com/'+ replacementString.substring(1) +'" target="_blank" rel="nofollow">' + replacementString + '</a>';1792 }1793 var hashRegex = /[#]+[A-Za-z0-9-_]+/g,1794 tagRegex = /[@]+[A-Za-z0-9-_]+/g;1795 // End caption linking functions17961797 //Load comment replies using Ajax1798 function cffLoadCommentReplies( $this ){17991800 var usegrouptoken = '';1801 if( $this.closest('#cff').hasClass('cff-group') ) usegrouptoken = '&usegrouptoken=true';18021803 var $commentReplies = $this.parent(),1804 $commentRepliesBox = $commentReplies.siblings('.cff-comment-replies-box'),1805 comments_url = cffsiteurl + "/custom-facebook-feed-pro/comments.php?id=" + $commentReplies.attr('data-id') + usegrouptoken;18061807 if( $commentReplies.hasClass('cff-hide') ){18081809 $commentRepliesBox.hide();1810 $commentReplies.removeClass('cff-hide');18111812 } else {18131814 $commentRepliesBox.show();1815 $commentReplies.addClass('cff-hide');18161817 //If the replies haven't been retrieved yet then get them, otherwise just show the existing ones again1818 if( $commentRepliesBox.hasClass('cff-empty') ){18191820 //Display loader1821 var $commentRepliesA = $commentReplies.find('a');1822 $commentRepliesA.append('<div class="cff-loader"></div>');1823 $commentReplies.find('.cff-loader').css('background-color', $commentRepliesA.css('color'));18241825 jQuery.ajax({1826 method: "GET",1827 url: comments_url,1828 success: function(data) {18291830 //Remove loader1831 $commentReplies.find('.cff-loader').remove();18321833 //Convert string of data received from comments.php to a JSON object1834 var data = jQuery.parseJSON( data ),1835 allComments = '';18361837 if( typeof data.comments !== 'undefined' ){1838 jQuery.each(data.comments.data, function(i, commentItem) {1839 allComments += '<div class="cff-comment-reply" id="cff_'+commentItem.id+'"><div class="cff-comment-text-wrapper"><div class="cff-comment-text"><p><a href="http://facebook.com/'+commentItem.from.id+'" class="cff-name" target="_blank" rel="nofollow" style="color:#;">'+commentItem.from.name+'</a>'+commentItem.message+'</p>';18401841 //Add image attachment if exists1842 if( typeof commentItem.attachment !== 'undefined' ) allComments += '<a class="cff-comment-attachment" href="'+commentItem.attachment.url+'" target="_blank"><img src="'+commentItem.attachment.media.image.src+'" alt="'+commentItem.attachment.title+'" /></a>';18431844 //Show like count if exists1845 if(parseInt(commentItem.like_count) > 0) allComments += '<span class="cff-time"><span class="cff-comment-likes"><b></b>'+commentItem.like_count+'</span></span>';18461847 allComments += '</div></div><div class="cff-comment-img cff-comment-reply-img"><a href="http://facebook.com/'+commentItem.from.id+'" target="_blank" rel="nofollow"><img src="https://graph.facebook.com/'+commentItem.from.id+'/picture" width="20" height="20" alt="Avatar"></a></div></div>';1848 });1849 }18501851 $commentRepliesBox.html(allComments).removeClass('cff-empty');18521853 if( $this.closest('#cff').hasClass('cff-masonry') && !$this.closest('#cff').hasClass('cff-masonry-css') ) cffAddMasonry( $this.closest('#cff') );18541855 } //End success18561857 }); //End ajax18581859 }18601861 }1862 } // End cffLoadCommentReplies()18631864186518661867 function cffLightbox(){1868 /**1869 * Lightbox v2.7.11870 * by Lokesh Dhakar - http://lokeshdhakar.com/projects/lightbox2/1871 *1872 * @license http://creativecommons.org/licenses/by/2.5/1873 * - Free for use in both personal and commercial projects1874 * - Attribution requires leaving author name, author link, and the license info intact1875 */18761877 (function() {1878 // Use local alias1879 var $ = jQuery;18801881 var LightboxOptions = (function() {1882 function LightboxOptions() {1883 this.fadeDuration = 300;1884 this.fitImagesInViewport = true;1885 this.resizeDuration = 400;1886 this.positionFromTop = 50;1887 this.showImageNumberLabel = true;1888 this.alwaysShowNavOnTouchDevices = false;1889 this.wrapAround = false;1890 }1891 1892 // Change to localize to non-english language1893 LightboxOptions.prototype.albumLabel = function(curImageNum, albumSize) {1894 return curImageNum + " / " + albumSize;1895 };18961897 return LightboxOptions;1898 })();189919001901 var Lightbox = (function() {1902 function Lightbox(options) {1903 this.options = options;1904 this.album = [];1905 this.currentImageIndex = void 0;1906 this.init();1907 }19081909 Lightbox.prototype.init = function() {1910 this.enable();1911 this.build();1912 };19131914 // Loop through anchors and areamaps looking for either data-lightbox attributes or rel attributes1915 // that contain 'cff-lightbox'. When these are clicked, start lightbox.1916 Lightbox.prototype.enable = function() {1917 var self = this;1918 $('body').on('click', 'a[data-cff-lightbox], area[data-cff-lightbox]', function(event) {1919 self.start($(event.currentTarget));1920 return false;1921 });1922 };19231924 // Build html for the lightbox and the overlay.1925 // Attach event handlers to the new DOM elements. click click click1926 Lightbox.prototype.build = function() {19271928 var self = this;1929 $("<div id='cff-lightbox-overlay' class='cff-lightbox-overlay'></div><div id='cff-lightbox-wrapper' class='cff-lightbox-wrapper'><div class='cff-lightbox-outerContainer'><div class='cff-lightbox-container'><video class='cff-lightbox-video' src='' poster='' controls></video><iframe type='text/html' src='' allowfullscreen frameborder='0' webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe><img class='cff-lightbox-image' src='' alt='"+$('#cff').attr('data-fb-text')+"' /><div class='cff-lightbox-nav'><a class='cff-lightbox-prev' href=''><span>Previous</span></a><a class='cff-lightbox-next' href=''><span>Next</span></a></div><div class='cff-lightbox-loader'><a class='cff-lightbox-cancel'></a></div><div class='cff-lightbox-sidebar'></div></div></div><div class='cff-lightbox-dataContainer'><div class='cff-lightbox-data'><div class='cff-lightbox-details'><p class='cff-lightbox-caption'><span class='cff-lightbox-caption-text'></span><a class='cff-lightbox-facebook' href=''>"+$('#cff').attr('data-fb-text')+"</a></p><div class='cff-lightbox-thumbs'><div class='cff-lightbox-thumbs-holder'></div></div></div><div class='cff-lightbox-closeContainer'><a class='cff-lightbox-close'><i class='fa fa-times'></i></a></div></div></div></div>").appendTo($('body'));1930 1931 // Cache jQuery objects1932 this.$lightbox = $('#cff-lightbox-wrapper');1933 this.$overlay = $('#cff-lightbox-overlay');1934 this.$outerContainer = this.$lightbox.find('.cff-lightbox-outerContainer');1935 this.$container = this.$lightbox.find('.cff-lightbox-container');19361937 // Store css values for future lookup1938 this.containerTopPadding = parseInt(this.$container.css('padding-top'), 10);1939 this.containerRightPadding = parseInt(this.$container.css('padding-right'), 10);1940 this.containerBottomPadding = parseInt(this.$container.css('padding-bottom'), 10);1941 this.containerLeftPadding = parseInt(this.$container.css('padding-left'), 10);1942 1943 // Attach event handlers to the newly minted DOM elements1944 this.$overlay.hide().on('click', function() {1945 self.end();1946 if( cff_supports_video() ) $('#cff-lightbox-wrapper video.cff-lightbox-video')[0].pause();1947 $('#cff-lightbox-wrapper iframe').attr('src', '');1948 return false;1949 });195019511952 this.$lightbox.hide().on('click', function(event) {1953 if ($(event.target).attr('id') === 'cff-lightbox-wrapper') {1954 self.end();1955 if( cff_supports_video() ) $('#cff-lightbox-wrapper video.cff-lightbox-video')[0].pause();1956 $('#cff-lightbox-wrapper iframe').attr('src', '');1957 }1958 return false;1959 });1960 this.$outerContainer.on('click', function(event) {1961 if ($(event.target).attr('id') === 'cff-lightbox-wrapper') {1962 self.end();1963 if( cff_supports_video() ) $('#cff-lightbox-wrapper video.cff-lightbox-video')[0].pause();1964 $('#cff-lightbox-wrapper iframe').attr('src', '');1965 }1966 return false;1967 });196819691970 this.$lightbox.find('.cff-lightbox-prev').on('click', function() {1971 if (self.currentImageIndex === 0) {1972 self.changeImage(self.album.length - 1);1973 } else {1974 self.changeImage(self.currentImageIndex - 1);1975 }1976 if( cff_supports_video() ) $('#cff-lightbox-wrapper video.cff-lightbox-video')[0].pause();1977 $('#cff-lightbox-wrapper iframe').attr('src', '');1978 return false;1979 });19801981 this.$lightbox.find('.cff-lightbox-next').on('click', function() {19821983 if (self.currentImageIndex === self.album.length - 1) {1984 self.changeImage(0);1985 } else {1986 self.changeImage(self.currentImageIndex + 1);1987 }1988 if( cff_supports_video() ) $('#cff-lightbox-wrapper video.cff-lightbox-video')[0].pause();1989 $('#cff-lightbox-wrapper iframe').attr('src', '');1990 return false;1991 });199219931994 //CHANGE IMAGE ON THUMB CLICK1995 $('.cff-lightbox-thumbs').on('click', '.cff-lightbox-attachment', function (){1996 var $thumb = $(this),1997 $thumbImg = $thumb.find('img'),1998 captionText = $thumb.attr('data-caption');19992000 if(captionText == '' || captionText == 'undefined') captionText = $thumb.attr('orig-caption');20012002 //Pass image URL, width and height to the change image function2003 self.changeImage(parseInt( $thumb.attr('data-cff-lightbox-order') ), $thumb.attr('href'), $thumbImg.attr('width'), $thumbImg.attr('height'), $thumb.attr('data-facebook'), captionText);2004 return false;2005 });200620072008 this.$lightbox.find('.cff-lightbox-loader, .cff-lightbox-close').on('click', function() {2009 self.end();2010 if( cff_supports_video() ) $('#cff-lightbox-wrapper video.cff-lightbox-video')[0].pause();2011 $('#cff-lightbox-wrapper iframe').attr('src', '');2012 return false;2013 });20142015 }; //End build()20162017 // Show overlay and lightbox. If the image is part of a set, add siblings to album array.2018 Lightbox.prototype.start = function($link) {2019 var self = this;2020 var $window = $(window);20212022 $window.on('resize', $.proxy(this.sizeOverlay, this));20232024 $('select, object, embed').css({2025 visibility: "hidden"2026 });20272028 this.sizeOverlay();20292030 //Only set the album to be empty when the page first loads, otherwise don't empty it otherwise it's rebuilt using the "push" method below and it pushes the lightbox thumbnails onto the end of the array instead of them being spliced in at their correct location2031 if(this.album.length == 0) this.album = [];2032 var imageNumber = 0;20332034 function addToAlbum($link) {2035 //If an image with the same href has already been added then don't add it to the lightbox order again2036 var found = false;2037 $.each(self.album, function(i, imageitem) {2038 if( imageitem.link == $link.attr('href') ){2039 found = true;2040 return;2041 }2042 });2043 if(found == true) return; 20442045 self.album.push({2046 link: $link.attr('href'),2047 title: $link.attr('data-title') || $link.attr('title'),2048 postid: $link.attr('data-id'),2049 showthumbs: $link.attr('data-thumbs'),2050 facebookurl: $link.attr('data-url'),2051 video: $link.attr('data-video'),2052 iframe: $link.attr('data-iframe'),2053 type: $link.attr('data-type'),2054 cffgroupalbums: $link.attr('data-cffgroupalbums'),2055 isthumbnail: $link.attr('data-cff-isthumbnail'),2056 pagename: $link.parent().attr('data-cff-page-name'),2057 posttime: $link.parent().attr('data-cff-post-time'),2058 lbcomments: $link.attr('data-lb-comments')2059 });2060 }20612062 // Support both data-lightbox attribute and rel attribute implementations2063 var dataLightboxValue = $link.attr('data-cff-lightbox');2064 var $links;20652066 if (dataLightboxValue) {2067 $links = $($link.prop("tagName") + '[data-cff-lightbox="' + dataLightboxValue + '"]');2068 for (var i = 0; i < $links.length; i = ++i) {2069 addToAlbum($($links[i]));2070 if ($links[i] === $link[0]) {2071 imageNumber = i;20722073 //Loop through the album array and try to match the ID of the image that was clicked on with an image within the album array. We can then use that to set the lightbox order for that image, as otherwise it's incorrect if there have been thumbs added into the album array which aren't physically present on the page as they're loaded dynamically from the thumbs array within the lightbox. Only do this for post images and not thumbnails.2074 $.each(self.album, function(i, image) {2075 if( (image.postid == $link.attr('data-id')) && image.isthumbnail != true ) imageNumber = i;2076 });20772078 }2079 }2080 } else {2081 if ($link.attr('rel') === 'lightbox') {2082 // If image is not part of a set2083 addToAlbum($link);2084 } else {2085 // If image is part of a set2086 $links = $($link.prop("tagName") + '[rel="' + $link.attr('rel') + '"]');2087 for (var j = 0; j < $links.length; j = ++j) {2088 addToAlbum($($links[j]));2089 if ($links[j] === $link[0]) {2090 imageNumber = j;2091 }2092 }2093 }2094 }2095 2096 // Position Lightbox2097 var top = $window.scrollTop() + this.options.positionFromTop;2098 var left = $window.scrollLeft();2099 this.$lightbox.css({2100 top: top + 'px',2101 left: left + 'px'2102 }).fadeIn(this.options.fadeDuration);21032104 this.changeImage(imageNumber);2105 };21062107 // Hide most UI elements in preparation for the animated resizing of the lightbox.2108 Lightbox.prototype.changeImage = function(imageNumberVal, imageUrl, imgWidth, imgHeight, facebookLink, captionText) {2109 var self = this,2110 isThumb = false,2111 bottomPadding = 120;21122113 imageNumber = imageNumberVal;21142115 //Is this a thumb being clicked?2116 if(typeof imageUrl !== 'undefined') isThumb = true;21172118 this.disableKeyboardNav();2119 var $image = this.$lightbox.find('.cff-lightbox-image');21202121 this.$overlay.fadeIn(this.options.fadeDuration);21222123 $('.cff-lightbox-loader').fadeIn('slow');2124 this.$lightbox.find('.cff-lightbox-image, .cff-lightbox-nav, .cff-lightbox-prev, .cff-lightbox-next, .cff-lightbox-dataContainer, .cff-lightbox-numbers, .cff-lightbox-caption').hide();21252126 this.$outerContainer.addClass('animating');212721282129 // When image to show is preloaded, we send the width and height to sizeContainer()2130 var preloader = new Image();2131 preloader.onload = function() {2132 var $preloader, imageHeight, imageWidth, maxImageHeight, maxImageWidth, windowHeight, windowWidth;2133 2134 $image.attr('src', self.album[imageNumber].link);21352136 /*** THUMBS ***/2137 //Change the main image when it's a thumb that's being clicked2138 if(isThumb){2139 $image.attr('src', imageUrl);2140 $('.cff-lightbox-facebook').attr('href', facebookLink);2141 $('.cff-lightbox-caption .cff-lightbox-caption-text').html(captionText);21422143 //Set width and height of image when thumb is clicked2144 preloader.width = imgWidth;2145 preloader.height = imgHeight;21462147 //Increase bottom padding to make room for at least one row of thumbs2148 bottomPadding = 180;2149 }2150 /*** THUMBS ***/21512152 $preloader = $(preloader);21532154 $image.width(preloader.width);2155 $image.height(preloader.height);2156 2157 if (self.options.fitImagesInViewport) {2158 // Fit image inside the viewport.2159 // Take into account the border around the image and an additional 10px gutter on each side.2160 windowWidth = $(window).width();2161 windowHeight = $(window).height();21622163 //If this feed has lightbox comments enabled then add room for the sidebar2164 var cff_lb_comments_width = 0;2165 if( $('#cff_' + self.album[0].postid).closest('#cff').attr('data-lb-comments') == 'true' && windowWidth > 640 ) cff_lb_comments_width = 300;21662167 maxImageWidth = windowWidth - self.containerLeftPadding - self.containerRightPadding - 20 - cff_lb_comments_width;2168 maxImageHeight = windowHeight - self.containerTopPadding - self.containerBottomPadding - bottomPadding;21692170 // Is there a fitting issue?2171 if ((preloader.width > maxImageWidth) || (preloader.height > maxImageHeight)) {2172 if ((preloader.width / maxImageWidth) > (preloader.height / maxImageHeight)) {2173 imageWidth = maxImageWidth;2174 imageHeight = parseInt(preloader.height / (preloader.width / imageWidth), 10);2175 $image.width(imageWidth);2176 $image.height(imageHeight);2177 } else {2178 imageHeight = maxImageHeight;2179 imageWidth = parseInt(preloader.width / (preloader.height / imageHeight), 10);2180 $image.width(imageWidth);2181 $image.height(imageHeight);2182 }2183 }2184 }21852186 //Pass the width and height of the main image2187 self.sizeContainer($image.width(), $image.height());21882189 };21902191 preloader.src = this.album[imageNumber].link;2192 this.currentImageIndex = imageNumber;2193 };21942195 // Stretch overlay to fit the viewport2196 Lightbox.prototype.sizeOverlay = function() {2197 this.$overlay2198 .width($(window).width())2199 .height($(document).height());2200 };22012202 // Animate the size of the lightbox to fit the image we are showing2203 Lightbox.prototype.sizeContainer = function(imageWidth, imageHeight) {2204 var self = this;2205 2206 var oldWidth = this.$outerContainer.outerWidth();2207 var oldHeight = this.$outerContainer.outerHeight();2208 var newWidth = imageWidth + this.containerLeftPadding + this.containerRightPadding;2209 var newHeight = imageHeight + this.containerTopPadding + this.containerBottomPadding;2210 2211 function postResize() {2212 self.$lightbox.find('.cff-lightbox-dataContainer').width(newWidth);2213 self.$lightbox.find('.cff-lightbox-prevLink').height(newHeight);2214 self.$lightbox.find('.cff-lightbox-nextLink').height(newHeight);2215 self.showImage();2216 }22172218 if (oldWidth !== newWidth || oldHeight !== newHeight) {2219 this.$outerContainer.animate({2220 width: newWidth,2221 height: newHeight2222 }, this.options.resizeDuration, 'swing', function() {2223 postResize();2224 });2225 } else {2226 postResize();2227 }2228 };22292230 // Display the image and it's details and begin preload neighboring images.2231 Lightbox.prototype.showImage = function() {2232 this.$lightbox.find('.cff-lightbox-loader').hide();2233 this.$lightbox.find('.cff-lightbox-image').fadeIn('slow');2234 2235 this.updateNav();2236 this.updateDetails();2237 this.preloadNeighboringImages();2238 this.enableKeyboardNav();2239 };22402241 // Display previous and next navigation if appropriate.2242 Lightbox.prototype.updateNav = function() {2243 // Check to see if the browser supports touch events. If so, we take the conservative approach2244 // and assume that mouse hover events are not supported and always show prev/next navigation2245 // arrows in image sets.2246 var alwaysShowNav = false;2247 try {2248 document.createEvent("TouchEvent");2249 alwaysShowNav = (this.options.alwaysShowNavOnTouchDevices)? true: false;2250 } catch (e) {}22512252 this.$lightbox.find('.cff-lightbox-nav').show();22532254 if (this.album.length > 1) {2255 if (this.options.wrapAround) {2256 if (alwaysShowNav) {2257 this.$lightbox.find('.cff-lightbox-prev, .cff-lightbox-next').css('opacity', '1');2258 }2259 this.$lightbox.find('.cff-lightbox-prev, .cff-lightbox-next').show();2260 } else {2261 if (this.currentImageIndex > 0) {2262 this.$lightbox.find('.cff-lightbox-prev').show();2263 if (alwaysShowNav) {2264 this.$lightbox.find('.cff-lightbox-prev').css('opacity', '1');2265 }2266 }2267 if (this.currentImageIndex < this.album.length - 1) {2268 this.$lightbox.find('.cff-lightbox-next').show();2269 if (alwaysShowNav) {2270 this.$lightbox.find('.cff-lightbox-next').css('opacity', '1');2271 }2272 }2273 }2274 }2275 };22762277 var thumbsArr = {};22782279 // Display caption, image number, and closing button.2280 Lightbox.prototype.updateDetails = function() {2281 var self = this;2282 var origCaption = '';22832284 this.$lightbox.find('.cff-lightbox-nav, .cff-lightbox-nav a').show();22852286 /** NEW PHOTO ACTION **/2287 //Switch video when either a new popup or navigating to new one2288 if( cff_supports_video() ){2289 $('#cff-lightbox-wrapper').removeClass('cff-has-video');22902291 if (typeof this.album[this.currentImageIndex].video !== 'undefined'){2292 if( this.album[this.currentImageIndex].video.length ){2293 $('#cff-lightbox-wrapper').addClass('cff-has-video');2294 $('.cff-lightbox-video').attr({2295 'src' : this.album[this.currentImageIndex].video,2296 'poster' : this.album[this.currentImageIndex].link,2297 'autoplay' : 'true'2298 });2299 }2300 }23012302 }23032304 //***LIGHTBOX COMMENTS***2305 //Enable/disable lightbox comments. If it's a lightbox thumbnail then check whether the parent post has lb_comments enabled/disabled.2306 var cff_lb_comments = (this.album[this.currentImageIndex].lbcomments == 'true' && $('#cff_'+this.album[this.currentImageIndex].postid+' .cff-lightbox-link').attr('data-lb-comments') != 'false') ? true : false;23072308 if( $(window).width() <= 640 ) cff_lb_comments = false;23092310 //Add lightbox sidebar2311 if( cff_lb_comments ){2312 var lb_post_id = this.album[this.currentImageIndex].postid,2313 page_id = lb_post_id.split('_')[0],2314 author_name = this.album[this.currentImageIndex].pagename,2315 date_in_correct_format = this.album[this.currentImageIndex].posttime,2316 $lightbox_sidebar = $('.cff-lightbox-container .cff-lightbox-sidebar'),2317 $lightbox_thumbs_holder = $('.cff-lightbox-thumbs-holder'),2318 from_id = $( '#cff_'+this.album[this.currentImageIndex].postid ).attr('data-cff-from');23192320 //Add class to the lightbox container2321 $('.cff-lightbox-wrapper').addClass('cff-enable-lb-comments');23222323 //Adjust width to make room for the sidebar2324 $('.cff-lightbox-dataContainer').css( 'width', $('.cff-lightbox-dataContainer').innerWidth() + 300 );2325 $lightbox_sidebar.css('display', 'block');23262327 $lightbox_sidebar.html("<div class='cff-lightbox-sidebar-content'>" + "<div class='cff-author'><div class='cff-author-text'><p class='cff-page-name cff-author-date'><a href='https://facebook.com/"+from_id+"' target='_blank' rel='nofollow'>"+author_name+"</a><span class='cff-story'> </span></p><p class='cff-date'>"+date_in_correct_format+"</p></div><a href='https://facebook.com/"+from_id+"' target='_blank' rel='nofollow' class='cff-author-img'><img src='https://graph.facebook.com/"+from_id+"/picture?type=square' title='"+author_name+"' alt='"+author_name+"' width='40' height='40'></a></div>" + "<p class='cff-lightbox-caption'><span class='cff-lightbox-caption-text'>" + $('.cff-lightbox-caption-text').html() + '</span></p></div>' + $('#cff_'+this.album[this.currentImageIndex].postid+' .cff-comments-box')[0].outerHTML );23282329 //Use a timeout to delay this as the thumbs aren't added till further down2330 setTimeout(function(){2331 if( $lightbox_thumbs_holder.find('a').length > 1 ){2332 $lightbox_sidebar.find('.cff-page-name a').text( $lightbox_thumbs_holder.find('a.cff-selected').attr('data-page-name') );2333 $lightbox_sidebar.find('.cff-date').text( $lightbox_thumbs_holder.find('a.cff-selected').attr('data-post-date') );2334 }2335 }, 0);23362337 //Delete the caption from under the photo if the sidebar section is enabled2338 $('.cff-lightbox-dataContainer .cff-lightbox-caption').remove();2339 $lightbox_thumbs_holder.css('margin-top', -10);23402341 //If the "__ likes this" text is too long then bump it onto the next line2342 if( $lightbox_sidebar.find('.cff-reactions-count').innerWidth() > 150 ){2343 $lightbox_sidebar.find('.cff-likes-this-text').addClass('cff-long');2344 }23452346 //Add comment avatars2347 $lightbox_sidebar.find('.cff-comment:visible').each(function(){2348 var $thisComment = jQuery(this);2349 $thisComment.find('.cff-comment-img:not(.cff-comment-reply-img) a').html( '<img src="https://graph.facebook.com/'+$thisComment.attr("data-id")+'/picture" alt="Avatar" />' );2350 });23512352 //Load comment replies2353 $lightbox_sidebar.find('.cff-comment-replies a').on('click', function(){2354 cffLoadCommentReplies( $(this) );2355 });23562357 $lightbox_sidebar.find('.cff-show-more-comments a').attr('href', $lightbox_sidebar.find('.cff-comment-on-facebook a').attr('href') );23582359 } else { //End add lightbox sidebar23602361 //Disable lightbox2362 $('.cff-lightbox-wrapper .cff-lightbox-sidebar').html('');2363 $('.cff-lightbox-wrapper').removeClass('cff-enable-lb-comments');23642365 }2366 //***END LIGHTBOX COMMENTS***2367236823692370 $('#cff-lightbox-wrapper').removeClass('cff-has-iframe cff-fb-player');23712372 if( typeof this.album[this.currentImageIndex].iframe !== 'undefined' ){2373 if( this.album[this.currentImageIndex].iframe.length ){2374 var videoURL = this.album[this.currentImageIndex].iframe;2375 $('#cff-lightbox-wrapper').addClass('cff-has-iframe');23762377 if( videoURL.indexOf("https://www.facebook.com/v2.3/plugins/video.php?") !=-1 ) $('#cff-lightbox-wrapper').addClass('cff-fb-player');23782379 //If it's a swf then don't add the autoplay parameter. This is only for embedded videos like YouTube or Vimeo.2380 if( videoURL.indexOf(".swf") > -1 || videoURL.indexOf("&autoplay=1") !=-1 ){2381 var autoplayParam = '';2382 } else {2383 var autoplayParam = '?autoplay=1';2384 }23852386 //Add a slight delay before adding the URL else it doesn't autoplay on Firefox2387 var vInt = setTimeout(function() {2388 $('#cff-lightbox-wrapper iframe').attr({2389 'src' : videoURL + autoplayParam2390 });2391 }, 500);2392 }2393 } //End undefined check23942395 //Check whether it's a thumbnail image that's currently being shown in the lightbox2396 var isThumbnail = false;2397 if( this.album[this.currentImageIndex].isthumbnail ) isThumbnail = true;23982399 //Remove existing thumbs unless it's a thumbnail image which is being navigated through in which case keep the existing thumbnails2400 if( !isThumbnail ) $('.cff-lightbox-thumbs-holder').empty();24012402 //Change the link on the Facebook icon to be the link to the Facebook post only if it's the first image in the lightbox and one of the thumbs hasn't been clicked2403 if( this.album[this.currentImageIndex].link == $('.cff-lightbox-image').attr('src') ){2404 $('.cff-lightbox-facebook').attr('href', this.album[this.currentImageIndex].facebookurl);2405 }24062407 //Show thumbs area if there are thumbs2408 if( this.album[this.currentImageIndex].showthumbs == 'true' ){2409 $('.cff-lightbox-thumbs').show();2410 // $('.cff-lightbox-thumbs .cff-loader').show();24112412 //Get the post ID2413 var thisPostId = this.album[this.currentImageIndex].postid,2414 albumInfo = '',2415 albumThumbs = '',2416 albumsonly = false;2417 if( this.album[this.currentImageIndex].type == 'albumsonly' ) albumsonly = true;241824192420 if( typeof thumbsArr[thisPostId] !== 'undefined' ){24212422 //load them in from array in local var2423 $.each(thumbsArr[thisPostId], function(i, thumb) {2424 var origCaption = thumb[5].replace(/"/g, '&quot;');24252426 //Loop through the album array and find the imageindex of the item with this post ID. Then set the current image index to be this. Otherwise when going backwards through the lightbox the imageindex is set to be the current thumb index and then once i is added the index is too high.2427 var albumIndex = 0;2428 $.each(self.album, function(i, albumItem) {2429 if( albumItem.postid == thisPostId ){2430 albumIndex = i;2431 //Once found the first match exit the loop2432 return false;2433 }2434 });24352436 var lightboxImageOrder = (parseInt(albumIndex)+parseInt(i));2437 2438 albumThumbs += '<a href="'+thumb[0]+'" class="cff-lightbox-attachment" data-cff-lightbox="cff-lightbox-1" data-facebook="'+thumb[3]+'" data-caption="'+thumb[4]+'" orig-caption="'+origCaption+'" data-page-name="'+thumb[6]+'" data-post-date="'+thumb[7]+'" data-cff-lightbox-order="'+lightboxImageOrder+'" lbcomments="true" data-thumbs="true" data-url="'+thumb[3]+'" data-iframe data-video ';24392440 (albumsonly) ? albumThumbs += 'data-type="albumsonly" ' : albumThumbs += 'data-type ';2441 albumThumbs += 'data-cff-isthumbnail="true"><img src="'+thumb[0]+'" width="'+thumb[1]+'" height="'+thumb[2]+'" /></a>';24422443 //Add all of the thumbs (apart from the first thumb) to the lightbox order2444 if( i > 0 ){2445 cffInsertLightboxImage(lightboxImageOrder, thumb[0], thumb[4], thumb[3], thisPostId, albumsonly, true, thumb[6], thumb[7]);2446 }2447 });24482449 //Add thumbs to the page2450 $('.cff-lightbox-thumbs-holder').html( '<div style="margin-top: 10px;">' + albumThumbs + '</div>' );24512452 //Liquidfill the thumbs2453 jQuery(".cff-lightbox-thumbs-holder a").imgLiquid({fill:true});24542455 //Hide the loader2456 $('.cff-loader').hide();2457 $('.cff-lightbox-thumbs-holder').css('min-height', 0);24582459 } else {2460 //Use ajax to get them from Facebook API24612462 //Set paths for thumbs.php2463 if (typeof cffsiteurl === 'undefined' || cffsiteurl == '') cffsiteurl = window.location.host + '/wp-content/plugins';24642465 //AJAX2466 var cffAttachmentsUrl = cffsiteurl + "/custom-facebook-feed-pro/thumbs.php?id=" + thisPostId,2467 thumbsData = [];24682469 //If this is an albums only item and the thumbs will2470 if( albumsonly ){2471 cffAttachmentsUrl = cffAttachmentsUrl + '&albumsonly=true';2472 $('.cff-lightbox-thumbs-holder').css('min-height', 45).after('<div class="cff-loader fa-spin"></div>');2473 }24742475 //If it's a group album then add the absolute path so we can get the User Access Token from the DB2476 var cffgroupalbums = this.album[this.currentImageIndex].cffgroupalbums;2477 if( cffgroupalbums ) cffAttachmentsUrl = cffAttachmentsUrl + '&usegrouptoken=' + cffgroupalbums;24782479 $.ajax({2480 method: "GET",2481 url: cffAttachmentsUrl,2482 // dataType: "jsonp",2483 success: function(data) {24842485 //Convert string of data received from thumbs.php to a JSON object2486 data = jQuery.parseJSON( data );24872488 if(albumsonly){2489 //Compile the thumbs2490 $.each(data.data, function(i, photoItem) {2491 var dataCaption = '';2492 if( photoItem.name ) dataCaption = photoItem.name;2493 // origCaption = String(origCaption).replace(/"/g, '&quot;');24942495 //Format the caption and add links2496 dataCaption = cffLinkify(dataCaption);2497 dataCaption = dataCaption.replace( hashRegex , cffReplaceHashtags );2498 // dataCaption = dataCaption.replace( tagRegex , cffReplaceTags ); - causes an issue with email address linking2499 dataCaption = String(dataCaption).replace(/& /g, '&amp; ').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/\n/g, "<br/>");25002501 origCaption = String(origCaption).replace(/& /g, '&amp; ').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/\n/g, "<br/>");25022503 var lightboxImageOrder = (parseInt(self.currentImageIndex)+parseInt(i));25042505 //If it's a group then use the source otherwise it displays as question marks2506 var cffThumbHref = photoItem.source;25072508 albumThumbs += '<a href="'+cffThumbHref+'" class="cff-lightbox-attachment" data-facebook="http://facebook.com/'+photoItem.id+'" data-caption="'+dataCaption+'" orig-caption="'+origCaption+'" data-cff-lightbox-order="'+lightboxImageOrder+'" data-thumbs="true" data-url="http://facebook.com/'+photoItem.id+'" data-iframe data-video data-type="albumsonly" data-cff-isthumbnail="true"><img src="'+photoItem.source+'" lbcomments="false" width="'+photoItem.width+'" height="'+photoItem.height+'" /></a>';25092510 thumbsData.push([cffThumbHref, photoItem.width, photoItem.height, 'http://facebook.com/'+photoItem.id, dataCaption, origCaption]);25112512 //Add all of the thumbs (apart from the first thumb) to the lightbox order2513 if( i > 0 ){2514 cffInsertLightboxImage(lightboxImageOrder, cffThumbHref, dataCaption, 'http://facebook.com/'+photoItem.id, thisPostId, albumsonly, true);2515 }25162517 });2518 } else {2519 //Check whether there's data..2520 if (typeof data.attachments !== 'undefined') {25212522 //..Then compile the thumbs2523 $.each(data.attachments.data[0].subattachments.data, function(i, subattachment) {2524 var dataCaption = '';2525 if( subattachment.description ) dataCaption = subattachment.description;2526 origCaption = String(origCaption).replace(/"/g, '&quot;');25272528 //Format the caption and add links2529 dataCaption = cffLinkify(dataCaption);2530 dataCaption = dataCaption.replace( hashRegex , cffReplaceHashtags );2531 // dataCaption = dataCaption.replace( tagRegex , cffReplaceTags ); - causes an issue with email address linking2532 dataCaption = String(dataCaption).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/\n/g, "<br/>");25332534 var lightboxImageOrder = (parseInt(self.currentImageIndex)+parseInt(i));25352536 albumThumbs += '<a href="'+subattachment.media.image.src+'" class="cff-lightbox-attachment" data-facebook="'+subattachment.url+'" data-caption="'+dataCaption+'" orig-caption="'+origCaption+'" lbcomments="true" data-page-name="'+author_name+'" data-post-date="'+date_in_correct_format+'" data-cff-lightbox-order="'+lightboxImageOrder+'" data-thumbs="true" data-url="'+subattachment.url+'" data-iframe data-video data-type data-cff-isthumbnail="true"><img src="'+subattachment.media.image.src+'" width="'+subattachment.media.image.width+'" height="'+subattachment.media.image.height+'" /></a>';25372538 thumbsData.push([subattachment.media.image.src, subattachment.media.image.width, subattachment.media.image.height, subattachment.url, dataCaption, origCaption, author_name, date_in_correct_format]);25392540 //Add all of the thumbs (apart from the first thumb) to the lightbox order2541 if( i > 0 ){2542 cffInsertLightboxImage(lightboxImageOrder, subattachment.media.image.src, dataCaption, subattachment.url, thisPostId, albumsonly, true, author_name, date_in_correct_format);2543 }25442545 });25462547 } //End undefined check2548 2549 }25502551 //Add thumbs to the page2552 $('.cff-lightbox-thumbs-holder').append( '<div style="margin-top: 10px;">' + albumThumbs + '</div>' );25532554 //Liquidfill the thumbs2555 jQuery(".cff-lightbox-thumbs-holder .cff-lightbox-attachment").imgLiquid({fill:true});25562557 //Hide the loader2558 $('.cff-loader').hide();25592560 $('.cff-lightbox-thumbs-holder').css('min-height', 0);25612562 //Add the thumbs to the thumbs array to store them2563 thumbsArr[ thisPostId ] = thumbsData;25642565 }2566 });25672568 }256925702571 } else {2572 //If there are no thumbs then hide the thumbs area2573 $('.cff-lightbox-thumbs').hide();2574 }25752576 //Add a class to the selected thumb2577 $(".cff-lightbox-attachment").removeClass('cff-selected');2578 $(".cff-lightbox-attachment[href='"+$('.cff-lightbox-image').attr('src')+"']").addClass('cff-selected');257925802581 function cffInsertLightboxImage(currentImageIndex, link, title, facebookurl, postid, albumsonly, isThumbnail){25822583 //Make sure the thumbs aren't added to the lightbox order more than once2584 var found = false;2585 $.each(self.album, function(i, thumbitem) {2586 if( thumbitem.link == link ){2587 found = true;2588 return;2589 }2590 });2591 if(found == true) return;25922593 ( albumsonly ) ? postType = 'albumsonly' : postType = '';2594 ( albumsonly ) ? lbcomments = 'false' : lbcomments = 'true';25952596 //Push the image into the album array at the correct location so it's included in the lightbox order2597 self.album.splice(currentImageIndex, 0, {2598 link: link,2599 title: title,2600 postid: postid,2601 showthumbs: 'true',2602 facebookurl: facebookurl,2603 video: '',2604 iframe: '',2605 type: postType,2606 cffgroupalbums: undefined,2607 isthumbnail: isThumbnail,2608 lbcomments: lbcomments2609 });26102611 }26122613 /** END NEW PHOTO ACTION **/26142615 2616 //Still show the caption section even if there's not a caption as it contains the View on Facebook link2617 this.$lightbox.find('.cff-lightbox-caption').fadeIn('fast');26182619 // Enable anchor clicks in the injected caption html.2620 if (typeof this.album[this.currentImageIndex].title !== 'undefined' && this.album[this.currentImageIndex].title !== "") {2621 2622 //If it's the first image in the lightbox then set the caption to be the text from the post. For all subsequent images the caption is changed on the fly based elsehwere in the code based on an attr from the thumb that's clicked2623 var origCaption = this.album[this.currentImageIndex].title;26242625 //Add hashtag and tag links2626 // origCaption = cffLinkify(origCaption); - Caused issues with @tag links in regular lightbox popup2627 origCaption = origCaption.replace( hashRegex , cffReplaceHashtags );2628 // origCaption = origCaption.replace( tagRegex , cffReplaceTags ); - causes an issue with email address linking2629 //Decode the caption back so that the tags are rendered as HTML:2630 origCaption = String(origCaption).replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, '"');26312632 var $lightboxCaption = this.$lightbox.find('.cff-lightbox-caption'),2633 $lightboxCaptionText = $lightboxCaption.find('.cff-lightbox-caption-text');2634 if( this.album[this.currentImageIndex].link == $('.cff-lightbox-image').attr('src') ) $lightboxCaptionText.html( origCaption );26352636 //If there's no caption then remove the border and margin from the View on Facebook link2637 if( $lightboxCaptionText.text() == ' ' || $lightboxCaptionText.text() == '' ){2638 $lightboxCaption.addClass('cff-no-caption');2639 } else {2640 $lightboxCaption.removeClass('cff-no-caption');2641 }26422643 } else {2644 this.$lightbox.find('.cff-lightbox-caption').addClass('cff-no-caption').find('.cff-lightbox-caption-text').html('');2645 }26462647 this.$lightbox.find('.cff-lightbox-facebook, .cff-lightbox-caption-text a, .cff-lightbox-sidebar a:not(.cff-comment-replies-a)').unbind().on('click', function(event){2648 window.open(2649 $(this).attr('href'),2650 '_blank'2651 )2652 });2653 2654 if (this.album.length > 1 && this.options.showImageNumberLabel) {2655 this.$lightbox.find('.cff-lightbox-number').text(this.options.albumLabel(this.currentImageIndex + 1, this.album.length)).fadeIn('fast');2656 } else {2657 this.$lightbox.find('.cff-lightbox-number').hide();2658 }2659 2660 this.$outerContainer.removeClass('animating');2661 2662 this.$lightbox.find('.cff-lightbox-dataContainer').fadeIn(this.options.resizeDuration, function() {2663 return self.sizeOverlay();2664 });2665 };26662667 // Preload previous and next images in set.2668 Lightbox.prototype.preloadNeighboringImages = function() {2669 if (this.album.length > this.currentImageIndex + 1) {2670 var preloadNext = new Image();2671 preloadNext.src = this.album[this.currentImageIndex + 1].link;2672 }2673 if (this.currentImageIndex > 0) {2674 var preloadPrev = new Image();2675 preloadPrev.src = this.album[this.currentImageIndex - 1].link;2676 }2677 };26782679 Lightbox.prototype.enableKeyboardNav = function() {2680 $(document).on('keyup.keyboard', $.proxy(this.keyboardAction, this));2681 };26822683 Lightbox.prototype.disableKeyboardNav = function() {2684 $(document).off('.keyboard');2685 };26862687 Lightbox.prototype.keyboardAction = function(event) {2688 var KEYCODE_ESC = 27;2689 var KEYCODE_LEFTARROW = 37;2690 var KEYCODE_RIGHTARROW = 39;26912692 var keycode = event.keyCode;2693 var key = String.fromCharCode(keycode).toLowerCase();2694 if (keycode === KEYCODE_ESC || key.match(/x|o|c/)) {2695 if( cff_supports_video() ) $('#cff-lightbox-wrapper video.cff-lightbox-video')[0].pause();2696 $('#cff-lightbox-wrapper iframe').attr('src', '');2697 2698 this.end();2699 } else if (key === 'p' || keycode === KEYCODE_LEFTARROW) {2700 if (this.currentImageIndex !== 0) {2701 this.changeImage(this.currentImageIndex - 1);2702 } else if (this.options.wrapAround && this.album.length > 1) {2703 this.changeImage(this.album.length - 1);2704 }27052706 if( cff_supports_video() ) $('#cff-lightbox-wrapper video.cff-lightbox-video')[0].pause();2707 $('#cff-lightbox-wrapper iframe').attr('src', '');27082709 } else if (key === 'n' || keycode === KEYCODE_RIGHTARROW) {2710 if (this.currentImageIndex !== this.album.length - 1) {2711 this.changeImage(this.currentImageIndex + 1);2712 } else if (this.options.wrapAround && this.album.length > 1) {2713 this.changeImage(0);2714 }27152716 if( cff_supports_video() ) $('#cff-lightbox-wrapper video.cff-lightbox-video')[0].pause();2717 $('#cff-lightbox-wrapper iframe').attr('src', '');27182719 }2720 };27212722 // Closing time. :-(2723 Lightbox.prototype.end = function() {2724 this.disableKeyboardNav();2725 $(window).off("resize", this.sizeOverlay);2726 this.$lightbox.fadeOut(this.options.fadeDuration);2727 this.$overlay.fadeOut(this.options.fadeDuration);2728 $('select, object, embed').css({2729 visibility: "visible"2730 });2731 };27322733 return Lightbox;27342735 })();27362737 $(function() {2738 var options = new LightboxOptions();2739 var lightbox = new Lightbox(options);2740 });27412742 }).call(this);27432744 //Checks whether browser support HTML5 video element2745 function cff_supports_video() {2746 return !!document.createElement('video').canPlayType;2747 }274827492750 } //End cffLightbox function27512752 //Only call the lightbox if the class is on at least one feed on the page2753 if( jQuery('#cff.cff-lb').length ) cffLightbox();2754 ...

Full Screen

Full Screen

main.ts

Source:main.ts Github

copy

Full Screen

1let mySprite = sprites.create(img`2 ..................................3 ..................................4 ..................................5 ..................................6 ..................................7 ..................................8 ..................................9 ..................................10 ..................................11 ..................................12 ..................................13 ..................................14 .................f.....f..........15 ....fff.........cff...cff.........16 ...fffff.......cf1feffff1f........17 ...cccfff......cfffeefffff........18 ......cff.....ccffffeffffff.......19 ......cff.....ccffffeefffff.......20 .....cff......cf661f6fe1eee.......21 ....cff.......cf666f6feeeee.......22 ....cff.......cff666fffeeef.......23 ....cfff..ffff2ffffffcffffe.......24 .....cfffffffff2ffffcfcfff........25 ......cfffffffff22fffffff.........26 .......fffffffffff22222...........27 .......cfffffffffff55f............28 .......cffffcffffff55f............29 ......cfffffcffffffffc............30 .....cfffffcfffffffcc.............31 .....ffff.cfffffffffc.............32 .....fff...ccc..ccfffc............33 ............cc.ccc.fff............34 ..................................35 ..................................36 `, SpriteKind.Player)37animation.runImageAnimation(38mySprite,39[img`40 ................................41 ................................42 ................................43 ................................44 ................................45 ................................46 ................................47 ................................48 ................................49 ................................50 ................................51 ................................52 .................f.....f........53 ....fff.........cff...cff.......54 ...fffff.......cf1feffff1f......55 ...cccfff......cfffeefffff......56 ......cff.....ccffffeffffff.....57 ......cff.....ccffffeefffff.....58 .....cff......cf661f6fe1eee.....59 ....cff.......cf666f6feeeee.....60 ....cff.......cff666fffeeef.....61 ....cfff..ffff2ffffffcffffe.....62 .....cfffffffff2ffffcfcfff......63 ......cfffffffff22fffffff.......64 .......fffffffffff22222.........65 .......cfffffffffff55f..........66 .......cffffcffffff55f..........67 ......cfffffcffffffffc..........68 .....cfffffcfffffffcc...........69 .....ffff.cfffffffffc...........70 .....fff...ccc..ccfffc..........71 ............cc.ccc.fff..........72 ...............cc...ff..........73 ................................74 `,img`75 ................................76 ................................77 ................................78 ................................79 ................................80 ................................81 ................................82 ................................83 ................................84 ................................85 ................................86 ..ff............................87 ..fff............f.....f........88 ..cff...........cff...cff.......89 ...ff..........cf1feffff1f......90 ...ff..........cfffeefffff......91 ..cff.........ccffffeffffff.....92 .cff..........ccffffeefffff.....93 .cff..........cf661f6fe1eee.....94 .cfff.........cf666f6feeeee.....95 ..cffc........cff666fffeeef.....96 ...fffffffffff2ffffffcffffe.....97 ....fffffffffff2ffffcfcfff......98 .....cffffffffff22fffffff.......99 ......ffffffffffff22222.........100 .......ffffffffffff55f..........101 .......ffffffffffff55f..........102 .......fffffffffffffff..........103 ......ffffcfffffcffffc..........104 ......fffcccffffcfffc...........105 ......fffccc....cff.............106 ......ff..cc....cff.............107 ................................108 ................................109 `,img`110 ................................111 ................................112 ................................113 ................................114 ................................115 ................................116 ................................117 ................................118 ................................119 ................................120 ................................121 ................................122 ....ff...........f.....f........123 ...cff..........cff...cff.......124 ..cff..........cf1feffff1f......125 ..cff..........cfffeefffff......126 .cff..........ccffffeffffff.....127 .cff..........ccffffeefffff.....128 .cfff.........cf661f6fe1eee.....129 ..fffff.......cf666f6feeeee.....130 ...ccfff......cff666fffeeef.....131 .....cffffffff2ffffffcffffe.....132 ......cffffffff2ffffcfcfff......133 .......fffffffff22fffffff.......134 .......fffffffffff22222.........135 .......cfffffffffff55f..........136 .......cffffcffffff55f..........137 .......ccfffccffcfffffc.........138 ........cffffcfcffffffcc........139 .......cccfffcccfffffccc........140 .......cccff...fff..............141 .......cc......ff...............142 ................................143 ................................144 `,img`145 ................................146 ................................147 ................................148 ................................149 ................................150 ................................151 ................................152 ................................153 ................................154 ................................155 ................................156 ................................157 .................f.....f........158 ................cff...cff.......159 ..cff..........cf1feffff1f......160 .cfff..........cfffeefffff......161 cff...........ccffffeffffff.....162 cff...........ccffffeefffff.....163 cffff.........cf661f6fe1eee.....164 .cfffff.......cf666f6feeeee.....165 ...ccfff......cff666fffeeef.....166 .....ccfffffff2ffffffcffffe.....167 ......cffffffff2ffffcfcfff......168 .......fffffffff22fffffff.......169 .......fffffffffff22222.........170 .......cfffffffffff55f..........171 .......cffffccfffff55f..........172 ......ccffffffcffcffff..........173 .....ccccfffffcccffcfc..........174 .....cccccffffcffffcccc.........175 ..........ffffcfffc..ccc........176 ...........fff........cc........177 ................................178 ................................179 `,img`180 ................................181 ................................182 ................................183 ................................184 ................................185 ................................186 ................................187 ................................188 ................................189 ................................190 ................................191 ................................192 .................f.....f........193 .cf.............cff...cff.......194 cff............cf1feffff1f......195 cff............cfffeefffff......196 cffff.........ccffffeffffff.....197 .cffff........ccffffeefffff.....198 ...cff........cfffffffe1eee.....199 ....cff.......cffacccfeeeee.....200 ....cff.......cffffffffeeef.....201 .....cf.ffffff2ffffffcffffe.....202 .....cfffffffff2ffffcfcfff......203 ......cfffffffff22fffffff.......204 .......fffffffffff22222.........205 .......cfffffffffff55f..........206 .......cffffffffccf55f..........207 .......cffffffffffcfff..........208 ......ccffffcffcfffcf...........209 ......cccfffcffccffcc...........210 .........ffcc...cfccc...........211 .........fff......ccc...........212 ................................213 ................................214 `,img`215 ................................216 ................................217 ................................218 ................................219 ................................220 ................................221 ................................222 ................................223 ................................224 ................................225 ................................226 ................................227 .................f.....f........228 ....fff.........cff...cff.......229 ...fffff.......cf1feffff1f......230 ...cccfff......cfffeefffff......231 ......cff.....ccffffeffffff.....232 ......cff.....ccffffeefffff.....233 .....cff......cf661f6fe1eee.....234 ....cff.......cf666f6feeeee.....235 ....cff.......cff666fffeeef.....236 ....cfff..ffff2ffffffcffffe.....237 .....cfffffffff2ffffcfcfff......238 ......cfffffffff22fffffff.......239 .......fffffffffff22222.........240 .......cfffffffffff55f..........241 .......cffffcffffff55f..........242 ......cfffffcffffffffc..........243 .....cfffffcfffffffcc...........244 .....ffff.cfffffffffc...........245 .....fff...ccc..ccfffc..........246 ............cc.ccc.fff..........247 ...............cc...ff..........248 ................................249 `,img`250 ................................251 ................................252 ................................253 ................................254 ................................255 ................................256 ................................257 ................................258 ................................259 ................................260 ................................261 ................................262 ................................263 ................................264 ................................265 ................................266 ................................267 ................................268 ................................269 ................................270 ................................271 ................................272 ................................273 ................................274 ................................275 ................................276 ................................277 ................................278 ................................279 ................................280 ................................281 ................................282 ................................283 ................................284 `,img`285 ................................286 ................................287 ................................288 ................................289 ................................290 ................................291 ................................292 ................................293 ................................294 ................................295 ................................296 ................................297 ................................298 ................................299 ................................300 ................................301 ................................302 ................................303 ................................304 ................................305 ................................306 ................................307 ................................308 ................................309 ................................310 ................................311 ................................312 ................................313 ................................314 ................................315 ................................316 ................................317 ................................318 ................................319 `],320100,321true322)323controller.moveSprite(mySprite, 100, 100)324mySprite.setImage(img`325 ................................326 ................................327 ................................328 ................................329 ................................330 ................................331 ................................332 ................................333 ................................334 ................................335 ................................336 ................................337 .................f.....f........338 ................cff...cff.......339 ...............cf1feffff1f......340 ...............cfffeefffff......341 ..............ccffffeffffff.....342 ..............ccffffeefffff.....343 ...ffff.......cf661f6fe1eee.....344 ..ffffff......cf666f6feeeee.....345 ..ffccff......cff666fffeeef.....346 ..fc..cf....ff2ffffffcffffe.....347 .....ccf...ffff2ffffcfcfff......348 .....cff..ffffff22fffffff.......349 ....fff..fffffffff22222.........350 ...cff...ffffffffff55f..........351 ...cff..fffffffffff55f..........352 ..cff...fffffffffffffc..........353 ..cff...ffffcccffffcc...........354 ..cff...ffffffcfffffc...........355 ..cfff..ffffffcffffffcc.........356 ...fffffffffffffffffffc.........357 .....ffffffffffccfffff..........358 ................................359 ................................360 ................................361 ................................362 ................................363 ................................364 ................................365 ................................366 ................................367 ................................368 ................................369 ................................370 `)371scene.setBackgroundImage(img`372 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333373 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333374 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333375 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333376 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333377 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333378 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333379 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333380 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333381 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333382 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333383 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333384 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333385 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333386 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333387 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333388 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333389 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333390 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333391 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333392 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333393 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333394 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333395 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333396 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333397 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333398 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333399 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333400 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333401 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333402 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333403 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333404 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333405 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333406 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333407 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333408 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333409 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333410 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333411 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333412 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333413 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333414 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333415 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333416 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333417 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333418 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333419 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333420 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333421 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333422 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333423 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333424 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333425 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333426 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333427 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333428 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333429 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333430 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333431 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333432 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333433 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333434 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333435 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333436 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333437 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333438 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333439 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333440 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333441 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333442 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333443 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333445 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333446 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333447 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333448 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333449 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333450 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333451 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333452 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333453 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333454 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333455 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333456 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333457 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333458 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333459 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333460 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333461 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333462 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333463 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333464 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333465 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333466 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333467 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333468 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333469 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333470 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333471 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333472 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333473 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333474 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333475 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333476 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333477 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333478 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333479 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333480 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333481 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333482 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333483 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333484 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333485 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333486 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333487 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333488 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333489 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333490 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333491 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333...

Full Screen

Full Screen

cff-admin-scripts.js

Source:cff-admin-scripts.js Github

copy

Full Screen

1jQuery(document).ready(function() {2 3 //Tooltips4 jQuery('#cff-admin .cff-tooltip-link').click(function(){5 jQuery(this).closest('tr').find('.cff-tooltip').slideToggle();6 });78 //Toggle Access Token field9 if( jQuery('#cff_show_access_token').is(':checked') ) jQuery('.cff-access-token-hidden').show();10 jQuery('#cff_show_access_token').change(function(){11 jQuery('.cff-access-token-hidden').fadeToggle();12 });131415 //Is this a page, group or profile?16 var cff_page_type = jQuery('.cff-page-type select').val(),17 $cff_page_type_options = jQuery('.cff-page-options'),18 $cff_profile_error = jQuery('.cff-profile-error.cff-page-type');1920 //Should we show anything initially?21 if(cff_page_type !== 'page') $cff_page_type_options.hide();22 if(cff_page_type == 'profile') $cff_profile_error.show();2324 //When page type is changed show the relevant item25 jQuery('.cff-page-type').change(function(){26 cff_page_type = jQuery('.cff-page-type select').val();2728 if( cff_page_type !== 'page' ) {29 $cff_page_type_options.fadeOut(function(){30 if( cff_page_type == 'profile' ) {31 $cff_profile_error.fadeIn();32 } else {33 $cff_profile_error.fadeOut();34 }35 });36 37 } else {38 $cff_page_type_options.fadeIn();39 $cff_profile_error.fadeOut();40 }41 });424344 //Header icon45 //Icon type46 //Check the saved icon type on page load and display it47 jQuery('#cff-header-icon-example').removeClass().addClass('fa fa-' + jQuery('#cff-header-icon').val() );48 //Change the header icon when selected from the list49 jQuery('#cff-header-icon').change(function() {50 var $self = jQuery(this);5152 jQuery('#cff-header-icon-example').removeClass().addClass('fa fa-' + $self.val() );53 });545556 //Test Facebook API connection button57 jQuery('#cff-api-test').click(function(e){58 e.preventDefault();59 //Show the JSON60 jQuery('#cff-api-test-result textarea').css('display', 'block');61 });626364 //If 'Others only' is selected then show a note65 var $cffOthersOnly = jQuery('#cff-others-only');6667 if ( jQuery("#cff_show_others option:selected").val() == 'onlyothers' ) $cffOthersOnly.show();68 69 jQuery("#cff_show_others").change(function() {70 if ( jQuery("#cff_show_others option:selected").val() == 'onlyothers' ) {71 $cffOthersOnly.show();72 } else {73 $cffOthersOnly.hide();74 }75 });767778 //If '__ days ago' date is selected then show 'Translate this'79 var $cffTranslateDate = jQuery('#cff-translate-date');8081 if ( jQuery("#cff-date-formatting option:selected").val() == '1' ) $cffTranslateDate.show();82 83 jQuery("#cff-date-formatting").change(function() {84 if ( jQuery("#cff-date-formatting option:selected").val() == '1' ) {85 $cffTranslateDate.fadeIn();86 } else {87 $cffTranslateDate.fadeOut();88 }89 });9091 //Add the color picker92 if( jQuery('.cff-colorpicker').length > 0 ) jQuery('.cff-colorpicker').wpColorPicker();93 ...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1var wpt = require('webpagetest');2var api = new wpt('www.webpagetest.org');3var options = {4};5 if (err) return console.error(err);6 console.log(data);7});8var wpt = require('webpagetest');9var api = new wpt('www.webpagetest.org');10var options = {11};12 if (err) return console.error(err);13 console.log(data);14});15var wpt = require('webpagetest');16var api = new wpt('www.webpagetest.org');17var options = {18};19 if (err) return console.error(err);20 console.log(data);21});22var wpt = require('webpagetest');23var api = new wpt('www.webpagetest.org');24var options = {25};26 if (err) return console.error(err);27 console.log(data);28});29var wpt = require('webpagetest');30var api = new wpt('www.webpagetest.org');31var options = {32};33 if (err) return console.error(err);34 console.log(data);35});36var wpt = require('webpagetest');

Full Screen

Using AI Code Generation

copy

Full Screen

1var wpt = require('./wpt');2var fs = require('fs');3var path = require('path');4var url = require('url');5var http = require('http');6var https = require('https');7var util = require('util');8var crypto = require('crypto');9var async = require('async');10var S = require('string');11var mkdirp = require('mkdirp');12var ProgressBar = require('progress');13var request = require('request');14var config = require('./config');15var testConfig = require('./testConfig');16var wpt = new WebPageTest(config.wptServer, config.wptKey);

Full Screen

Using AI Code Generation

copy

Full Screen

1var wpt = require('webpagetest');2var fs = require('fs');3var async = require('async');4var wpt = new WebPageTest('www.webpagetest.org');5var options = {6};7var testIDs = [];8var results = [];9var testID = '';10var testURL = '';11var testLabel = '';12var testLocation = '';13var testConnectivity = '';14var testRuns = '';15var testTimeout = '';16var testPollResults = '';17var testFirstViewOnly = '';18var testVideo = '';19var testKey = '';20var testScript = '';21var testScriptFile = '';22var testScriptFileContents = '';23var testScriptFileContentsString = '';24var testScriptFileContentsArray = [];25var testScriptFileContentsArrayLength = 0;26var testScriptFileContentsArrayIndex = 0;27var testScriptFileContentsArrayIndex2 = 0;28var testScriptFileContentsArrayIndex3 = 0;29var testScriptFileContentsArrayIndex4 = 0;30var testScriptFileContentsArrayIndex5 = 0;31var testScriptFileContentsArrayIndex6 = 0;32var testScriptFileContentsArrayIndex7 = 0;33var testScriptFileContentsArrayIndex8 = 0;34var testScriptFileContentsArrayIndex9 = 0;35var testScriptFileContentsArrayIndex10 = 0;36var testScriptFileContentsArrayIndex11 = 0;37var testScriptFileContentsArrayIndex12 = 0;38var testScriptFileContentsArrayIndex13 = 0;39var testScriptFileContentsArrayIndex14 = 0;40var testScriptFileContentsArrayIndex15 = 0;41var testScriptFileContentsArrayIndex16 = 0;42var testScriptFileContentsArrayIndex17 = 0;43var testScriptFileContentsArrayIndex18 = 0;44var testScriptFileContentsArrayIndex19 = 0;

Full Screen

Using AI Code Generation

copy

Full Screen

1var wptoolkit = require('wptoolkit');2var cff = new wptoolkit.CFF();3var cffData = cff.generateCFF('test.pdf', 'test.cff');4var wptoolkit = require('wptoolkit');5var cff = new wptoolkit.CFF();6cff.generateCFF('test.pdf', 'test.cff', function(err, cffData) {7 if (err) {8 console.log(err);9 } else {10 console.log(cffData);11 }12});13var wptoolkit = require('wptoolkit');14var cff = new wptoolkit.CFF();15var options = {16};17cff.generateCFF('test.pdf', 'test.cff', options, function(err, cffData) {18 if (err) {19 console.log(err);20 } else {21 console.log(cffData);22 }23});24var wptoolkit = require('wptoolkit');25var cff = new wptoolkit.CFF();26var options = {27};28cff.generateCFF('test.pdf', 'test.cff', options, function(err, cffData) {29 if (err) {30 console.log(err);31 } else {32 console.log(cffData);33 }34});35var wptoolkit = require('wptoolkit');36var cff = new wptoolkit.CFF();37var options = {38};39cff.generateCFF('test.pdf', 'test.cff', options, function(err, cffData) {40 if (err) {41 console.log(err);42 } else {43 console.log(cffData);44 }45});

Full Screen

Using AI Code Generation

copy

Full Screen

1var wpt = require('webpagetest');2var wpt = new WebPageTest('www.webpagetest.org', 'A.0c3f4c4c8d0b1d2c3b4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7');3 if (err) return console.log(err);4 console.log(data);5});6 if (err) return console.log(err);7 console.log(data);8});

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run wpt automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful