[planet-web] add lazyload support for images within posts



commit ccf198dfa829d7d35f7131e8c11c61253b4e4f81
Author: Jeff Waugh <jdub bethesignal org>
Date:   Fri Sep 18 02:45:47 2009 +1000

    add lazyload support for images within posts

 themes/gnome/index.html.tmpl |   92 +++++++++++++++++++++--------------------
 web/jquery.lazyload.min.js   |    1 +
 2 files changed, 48 insertions(+), 45 deletions(-)
---
diff --git a/themes/gnome/index.html.tmpl b/themes/gnome/index.html.tmpl
index be5e425..28731b0 100644
--- a/themes/gnome/index.html.tmpl
+++ b/themes/gnome/index.html.tmpl
@@ -15,51 +15,8 @@
 	<link rel="stylesheet" href="http://blogs.gnome.org/wp-content/mu-plugins/bug-links/bug-links.css"; type="text/css">
 
 	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js";></script>
-	<script type="text/javascript" src="http://planet.gnome.org/jquery.cookie.min.js";></script>
-	<script type="text/javascript">
-	function toggleFeeds() {
-		$("#feedlist").slideToggle(function() {
-			$("#feeds h3").toggleClass("open");
-		});
-	}
-	$(document).ready(function() {
-		var hidden = $.cookie("hidden") ? $.cookie("hidden").split(",") : new Array();
-		// hide posts by disabled folks
-		if (hidden.length > 0) for (i in hidden) {
-			$("div." + hidden[i]).hide();
-		}
-		$("#feeds h3 a").click(function(e) {
-			e.preventDefault();
-			if ($("#feedlist ul").length == 0) {
-				$("#feedlist").load('feeds.html', '', function(r,t,x) {
-					$('<input type="checkbox" checked>')
-						.change(function() {
-							var nick = $(this).parent().attr("class");
-							var i = $.inArray(nick, hidden);
-							if ($(this).attr("checked")) {
-								if (hidden[i]) hidden.splice(i, 1);
-								$("div." + nick).show();
-							} else {
-								if (!hidden[i]) hidden[hidden.length] = nick;
-								$("div." + nick).hide();
-							}
-							$.cookie("hidden", hidden.join(","),
-								{expires: 365});
-						})
-						.prependTo("#feedlist ul li");
-					// remove checks from disabled folks
-					for (i in hidden) {
-						$("#feedlist ul li." + hidden[i] + " input")
-							.removeAttr("checked");
-					}
-					toggleFeeds();
-				});
-			} else {
-				toggleFeeds();
-			}
-		});
-	});
-	</script>
+	<script type="text/javascript" src="http://planet.gnome.org/jquery.lazyload.min.js";></script>
+	<script type="text/javascript"><!-- $(function(){ $('.post img').lazyload(); }); --></script>
 </head>
 
 <body>
@@ -200,6 +157,51 @@ Hosted by <a href="http://www.redhat.com/";>Red Hat</a>.</p>
 
 </div> <!-- /page -->
 
+	<script type="text/javascript" src="http://planet.gnome.org/jquery.cookie.min.js";></script>
+	<script type="text/javascript">
+	function toggleFeeds() {
+		$("#feedlist").slideToggle(function() {
+			$("#feeds h3").toggleClass("open");
+		});
+	}
+	$(document).ready(function() {
+		var hidden = $.cookie("hidden") ? $.cookie("hidden").split(",") : new Array();
+		// hide posts by disabled folks
+		if (hidden.length > 0) for (i in hidden) {
+			$("div." + hidden[i]).hide();
+		}
+		$("#feeds h3 a").click(function(e) {
+			e.preventDefault();
+			if ($("#feedlist ul").length == 0) {
+				$("#feedlist").load('feeds.html', '', function(r,t,x) {
+					$('<input type="checkbox" checked>')
+						.change(function() {
+							var nick = $(this).parent().attr("class");
+							var i = $.inArray(nick, hidden);
+							if ($(this).attr("checked")) {
+								if (hidden[i]) hidden.splice(i, 1);
+								$("div." + nick).show();
+							} else {
+								if (!hidden[i]) hidden[hidden.length] = nick;
+								$("div." + nick).hide();
+							}
+							$.cookie("hidden", hidden.join(","),
+								{expires: 365});
+						})
+						.prependTo("#feedlist ul li");
+					// remove checks from disabled folks
+					for (i in hidden) {
+						$("#feedlist ul li." + hidden[i] + " input")
+							.removeAttr("checked");
+					}
+					toggleFeeds();
+				});
+			} else {
+				toggleFeeds();
+			}
+		});
+	});
+	</script>
 
 </body>
 
diff --git a/web/jquery.lazyload.min.js b/web/jquery.lazyload.min.js
new file mode 100644
index 0000000..1193d0c
--- /dev/null
+++ b/web/jquery.lazyload.min.js
@@ -0,0 +1 @@
+(function(a){a.fn.lazyload=function(c){var d={threshold:0,failurelimit:0,event:"scroll",effect:"show",container:window};if(c){a.extend(d,c)}var b=this;if("scroll"==d.event){a(d.container).bind("scroll",function(g){var e=0;b.each(function(){if(!a.belowthefold(this,d)&&!a.rightoffold(this,d)){a(this).trigger("appear")}else{if(e++>d.failurelimit){return false}}});var f=a.grep(b,function(h){return !h.loaded});b=a(f)})}return this.each(function(){var e=this;a(e).attr("original",a(e).attr("src"));if("scroll"!=d.event||a.belowthefold(e,d)||a.rightoffold(e,d)){if(d.placeholder){a(e).attr("src",d.placeholder)}else{a(e).removeAttr("src")}e.loaded=false}else{e.loaded=true}a(e).one("appear",function(){if(!this.loaded){a("<img />").bind("load",function(){a(e).hide().attr("src",a(e).attr("original"))[d.effect](d.effectspeed);e.loaded=true}).attr("src",a(e).attr("original"))}});if("scroll"!=d.event){a(e).bind(d.event,function(f){if(!e.loaded){a(e).trigger("appear")}})}})};a.belowthefold=fu
 nction(c,d){if(d.container===undefined||d.container===window){var b=a(window).height()+a(window).scrollTop()}else{var b=a(d.container).offset().top+a(d.container).height()}return b<=a(c).offset().top-d.threshold};a.rightoffold=function(c,d){if(d.container===undefined||d.container===window){var b=a(window).width()+a(window).scrollLeft()}else{var b=a(d.container).offset().left+a(d.container).width()}return b<=a(c).offset().left-d.threshold};a.extend(a.expr[":"],{"below-the-fold":"$.belowthefold(a, {threshold : 0, container: window})","above-the-fold":"!$.belowthefold(a, {threshold : 0, container: window})","right-of-fold":"$.rightoffold(a, {threshold : 0, container: window})","left-of-fold":"!$.rightoffold(a, {threshold : 0, container: window})"})})(jQuery);
\ No newline at end of file



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]