can3p (can3p) wrote in changelog,
can3p
can3p
changelog

[livejournal] r21378: LJSUP-11444: Open the picture must be di...

Committer: dpetrov
LJSUP-11444: Open the picture must be displayed after a refresh page
U   trunk/htdocs/js/journal.js
U   trunk/htdocs/js/livejournal.js
Modified: trunk/htdocs/js/journal.js
===================================================================
--- trunk/htdocs/js/journal.js	2012-03-12 13:38:45 UTC (rev 21377)
+++ trunk/htdocs/js/journal.js	2012-03-12 14:02:37 UTC (rev 21378)
@@ -260,3 +260,100 @@
 	} );
 } )();
 
+(function() {
+	var storage = {
+		init: function() {
+			this._store = jQuery.storage.getItem('placeholders') || '';
+		},
+
+		makeHash: function(link) {
+			return ' ' + encodeURIComponent(link) + ' ';
+		},
+
+		inStorage: function(link) {
+			return this._store.indexOf(this.makeHash(link)) !== -1;
+		},
+
+		addUrl: function(link) {
+			if (this.inStorage(link)) { return; }
+
+			this._store += this.makeHash(link);
+			jQuery.storage.setItem('placeholders', this._store);
+		}
+	};
+
+	storage.init();
+
+	var placeholders = {
+		image: {
+			selector: '.b-mediaplaceholder-photo',
+			loading: 'b-mediaplaceholder-processing',
+			init: function() {
+				var self = this;
+				doc.on('click', this.selector, function(ev) { 
+					self.handler(this, ev);
+				});
+			},
+
+			handler: function(el, html) {
+				var im = new Image();
+
+				im.onload = im.onerror = jQuery.delayedCallback(this.imgLoaded.bind(this, el, im), 500);
+				im.src = el.href;
+				el.className += ' ' + this.loading;
+
+				storage.addUrl(el.href);
+			},
+
+			imgLoaded: function(el, image) {
+				var img = jQuery('<img />').attr('src', image.src),
+					$el = jQuery(el),
+					href = $el.data('href');
+
+				var style = $el.attr('style'),
+					imw, imh;
+
+				if (style) {
+					//easy way to parse style string
+					var d = jQuery('<div>').attr('style', style);
+					imw = d.width();
+					imh = d.height();
+
+					if (imw) { img.width(imw); }
+					if (imh) { img.height(imh); }
+				}
+
+				if (href && href.length > 0) {
+					img = jQuery('<a>', { href: href }).append(img);
+					$el.next('.b-mediaplaceholder-external').remove();
+				}
+
+				$el.replaceWith(img);
+			}
+		},
+
+		video: {
+			handler: function(link, html) {
+				link.parentNode.replaceChild(jQuery(unescape(html))[0], link);
+			}
+		}
+	};
+	// use replaceChild for no blink scroll effect
+
+	// Placeholder onclick event
+	LiveJournal.placeholderClick = function(el, html) {
+		var type = (html === 'image') ? html : 'video';
+
+		placeholders[type].handler(el, html);
+		return false;
+	};
+
+	LiveJournal.register_hook('page_load', function() {
+		jQuery('.b-mediaplaceholder').each(function() {
+			if(storage.inStorage(this.href)) {
+				this.onclick.apply(this);
+			}
+		});
+	});
+})();
+

Modified: trunk/htdocs/js/livejournal.js
===================================================================
--- trunk/htdocs/js/livejournal.js	2012-03-12 13:38:45 UTC (rev 21377)
+++ trunk/htdocs/js/livejournal.js	2012-03-12 14:02:37 UTC (rev 21378)
@@ -166,70 +166,6 @@
 		}, 'json' );
 };
 
-// Placeholder onclick event
-LiveJournal.placeholderClick = function() {
-	var placeholders = {
-		image: {
-			selector: '.b-mediaplaceholder-photo',
-			loading: 'b-mediaplaceholder-processing',
-			init: function() {
-				var self = this;
-				doc.on('click', this.selector, function(ev) { 
-					self.handler(this, ev);
-				});
-			},
-
-			handler: function(el, html) {
-				var im = new Image();
-
-				im.onload = im.onerror = jQuery.delayedCallback(this.imgLoaded.bind(this, el, im), 500);
-				im.src = el.href;
-				el.className += ' ' + this.loading;
-			},
-
-			imgLoaded: function(el, image) {
-				var img = jQuery('<img />').attr('src', image.src),
-					$el = jQuery(el),
-					href = $el.data('href');
-
-				var style = $el.attr('style'),
-					imw, imh;
-
-				if (style) {
-					//easy way to parse style string
-					var d = jQuery('<div>').attr('style', style);
-					imw = d.width();
-					imh = d.height();
-
-					if (imw) { img.width(imw); }
-					if (imh) { img.height(imh); }
-				}
-
-				if (href && href.length > 0) {
-					img = jQuery('<a>', { href: href }).append(img);
-					$el.next('.b-mediaplaceholder-external').remove();
-				}
-
-				$el.replaceWith(img);
-			}
-		},
-
-		video: {
-			handler: function(link, html) {
-				link.parentNode.replaceChild(jQuery(unescape(html))[0], link);
-			}
-		}
-	};
-	// use replaceChild for no blink scroll effect
-
-	return function(el, html) {
-		var type = (html === 'image') ? html : 'video';
-
-		placeholders[type].handler(el, html);
-		return false;
-	}
-}();
-
 // handy utilities to create elements with just text in them
 function _textSpan () { return _textElements("span", arguments); }
 function _textDiv  () { return _textElements("div", arguments);  }

Tags: can3p, dpetrov, js, livejournal
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments